TIP: You can type at any time to perform a new search.
Field Service
fieldservice · OCA/field-service
- Repository
- OCA/field-service · module folder · Try on Runboat
- Module version
- Category
- Field Service
- Folder size
- 2.34 MB
- License
- AGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://github.com/OCA/field-service
- Last tracking update
- 2026-08-17 11:35:59
- Authors
- Odoo Community Association (OCA), Gray Matter Logic
- Maintainers
- Odoo Community Association (OCA), Gray Matter Logic
- Committers
- Maxime Chambreuil, Weblate, OCA-git-bot, oca-ci, Hoa - Truong Thi Kim, Copilot App
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- fieldservice_account, fieldservice_activity, fieldservice_agreement, fieldservice_calendar, fieldservice_crm, fieldservice_expense, fieldservice_google_map, fieldservice_kanban_info, fieldservice_portal, fieldservice_project, fieldservice_purchase, fieldservice_recurring, fieldservice_route, fieldservice_sale, fieldservice_sign, fieldservice_size, fieldservice_skill, fieldservice_stage_server_action, fieldservice_stage_validation, fieldservice_stock, fieldservice_timeline, fieldservice_vehicle, helpdesk_mgmt_fieldservice
- Description
This module is the base of the Field Service application in Odoo.
Code Analysis ⓘ
Views touched (47)
| 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 | form | 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 | form | Inherits base.res_config_settings_view_form |
res_partner_search_reference |
res.partner.search.reference | res.partner | search | Inherits base.view_res_partner_filter |
res_territory_form_view_inherit |
res.territory.form.inherit | res.territory | form | 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 |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (20)
New fields (6)
-
colorIntegerdefault=10 args: 'Color Index' -
company_idMany2one → res.companyhelp='Company related to this category'index=Truerequired=Falsestring='Company' args: 'res.company' -
descriptionChar -
full_nameCharcompute='_compute_full_name' -
nameCharrequired=True -
parent_idMany2one → fsm.categorystring='Parent' args: 'fsm.category'
No public methods.
New fields (15)
-
branch_idMany2one → res.branchcompute='_compute_branch_id'readonly=Falsestore=Truestring='Branch' args: 'res.branch' -
child_idsOne2many → fsm.equipmentstring='Children' args: 'fsm.equipment', 'parent_id' -
colorIntegerargs: 'Color Index' -
company_idMany2one → res.companydefault=<expr>help='Company related to this equipment'index=Truerequired=Truestring='Company' args: 'res.company' -
current_location_idMany2one → fsm.locationstring='Current Location' args: 'fsm.location' -
district_idMany2one → res.districtcompute='_compute_district_id'readonly=Falsestore=Truestring='District' args: 'res.district' -
location_idMany2one → fsm.locationstring='Assigned Location' args: 'fsm.location' -
managed_by_idMany2one → res.partnerstring='Managed By' args: 'res.partner' -
nameCharrequired=True -
notesHtml -
owned_by_idMany2one → res.partnerstring='Owned By' args: 'res.partner' -
parent_idMany2one → fsm.equipmentstring='Parent' args: 'fsm.equipment' -
person_idMany2one → fsm.personstring='Assigned Operator' args: 'fsm.person' -
region_idMany2one → res.regioncompute='_compute_region_id'readonly=Falsestore=Truestring='Region' args: 'res.region' -
territory_idMany2one → res.territorycompute='_compute_territory_id'readonly=Falsestore=Truestring='Territory' args: 'res.territory'
No public methods.
New fields (25)
-
branch_idMany2one → res.branchstring='Branch' args: 'res.branch' -
branch_manager_idMany2onerelated='branch_id.partner_id'string='Branch Manager' -
calendar_idMany2one → resource.calendarstring='Office Hours' args: 'resource.calendar' -
child_idsOne2many → fsm.locationcomodel_name='fsm.location'inverse_name='parent_id'readonly=Truestring='Children Locations' -
complete_directionHtmlcompute='_compute_complete_direction'recursive=Truestore=True -
complete_nameCharcompute='_compute_complete_name'recursive=Truestore=True -
contact_countIntegercompute='_compute_contact_count'string='Contacts Count' -
contact_idMany2one → res.partnerdomain=<expr>index=Truestring='Primary Contact' args: 'res.partner' -
descriptionChar -
directionHtml -
district_idMany2one → res.districtstring='District' args: 'res.district' -
district_manager_idMany2onerelated='district_id.partner_id'string='District Manager' -
equipment_countIntegercompute='_compute_equipment_count'string='Equipment' -
notesHtmlstring='Location Notes' -
owner_idMany2one → res.partnerbypass_search_access=Trueondelete='restrict'required=Truestring='Related Owner' args: 'res.partner' -
parent_idMany2one → fsm.locationindex=Truestring='Parent' args: 'fsm.location' -
parent_pathCharindex=True -
partner_idMany2one → res.partnerbypass_search_access=Truedelegate=Trueondelete='restrict'required=Truestring='Related Partner' args: 'res.partner' -
person_idsOne2many → fsm.location.personstring='Workers' args: 'fsm.location.person', 'location_id' -
region_idMany2one → res.regionstring='Region' args: 'res.region' -
region_manager_idMany2onerelated='region_id.partner_id'string='Region Manager' -
sublocation_countIntegercompute='_compute_sublocation_count'string='Sub Locations' -
team_idMany2one → fsm.teamcomodel_name='fsm.team'help='Default team assigned to orders in this location' -
territory_idMany2one → res.territorystring='Territory' args: 'res.territory' -
territory_manager_idMany2onerelated='territory_id.person_id'string='Primary Assignment'
-
action_view_contacts(self)This function returns an action that display existing contacts of given fsm location id and its child locations. It can either be a in a list or in a form view, if there is only one contact to show. -
action_view_equipment(self)This function returns an action that display existing equipment of given fsm location id. It can either be a in a list or in a form view, if there is only one equipment to show. -
action_view_sublocation(self)This function returns an action that display existing sub-locations of a given fsm location id. It can either be a in a list or in a form view, if there is only one sub-location to show. -
create(self, vals_list)@api.model_create_multi -
geo_localize(self)
New fields (7)
-
contact_idMany2onerelated='location_id.contact_id'string='Contact' -
emailCharrelated='person_id.email' -
location_idMany2one → fsm.locationindex=Truerequired=Truestring='Location' args: 'fsm.location' -
owner_idMany2onerelated='location_id.owner_id'string='Owner' -
person_idMany2one → fsm.personindex=Truerequired=Truestring='Worker' args: 'fsm.person' -
phoneCharrelated='person_id.phone' -
sequenceIntegerdefault='10'required=True
No public methods.
New fields (2)
-
hideBoolean -
stage_idMany2one → fsm.stagecopy=Falsedefault=<expr>group_expand='_read_group_stage_ids'index=Truestring='Stage'tracking=True args: 'fsm.stage'
-
new_stage(self, operator) -
next_stage(self) -
previous_stage(self)
New fields (50)
-
branch_idMany2one → res.branchrelated='location_id.branch_id'store=Truestring='Branch' args: 'res.branch' -
category_idsMany2many → fsm.categorystring='Categories' args: 'fsm.category' -
cityCharrelated='location_id.city' -
colorIntegerdefault=0 args: 'Color Index' -
colorIntegerargs: 'Color Index' -
company_idMany2one → res.companydefault=<expr>help='Company related to this order'index=Truerequired=Truestring='Company' args: 'res.company' -
country_nameCharrelated='location_id.country_id.name'string='Country' -
current_dateDatetimedefault=fields.Datetime.nowstore=True -
custom_colorCharrelated='stage_id.custom_color'string='Stage Color' -
date_endDatetimestring='Actual End' -
date_startDatetimestring='Actual Start' -
descriptionHtmlcompute='_compute_description'precompute=Truereadonly=Falsestore=True -
display_nameCharrelated='name'string='Order' -
district_idMany2one → res.districtrelated='location_id.district_id'store=Truestring='District' args: 'res.district' -
durationFloatcompute='_compute_duration'help='Actual duration in hours'string='Actual duration' -
equipment_idsMany2many → fsm.equipmentcompute='_compute_equipment_ids'precompute=Truereadonly=Falsestore=Truestring='Equipments' args: 'fsm.equipment' -
internal_typeSelectionrelated='type.internal_type' -
is_closedBooleanrelated='stage_id.is_closed' args: 'Is closed' -
location_directionsHtmlcompute='_compute_location_directions'precompute=Truereadonly=Falsestore=True -
location_idMany2one → fsm.locationindex=Truerequired=Truestring='Location' args: 'fsm.location' -
nameCharcopy=Falsedefault=<expr>index=Truerequired=True -
person_idMany2one → fsm.personindex=Truestring='Assigned To' args: 'fsm.person' -
person_idsMany2many → fsm.personstring='Field Service Workers' args: 'fsm.person' -
person_phoneCharrelated='person_id.phone'string='Worker Phone' -
phoneCharrelated='location_id.phone'string='Location Phone' -
prioritySelectiondefault=<expr>index=True args: fsm_stage.AVAILABLE_PRIORITIES -
region_idMany2one → res.regionrelated='location_id.region_id'store=Truestring='Region' args: 'res.region' -
request_earlyDatetimedefault=<expr>string='Earliest Request Date' -
request_lateDatetimestring='Latest Request Date' -
require_signatureBooleanrelated='stage_id.require_signature' -
resolutionHtml -
scheduled_date_endDatetimestring='Scheduled End' -
scheduled_date_startDatetimestring='Scheduled Start (ETA)' -
scheduled_durationFloathelp='Scheduled duration of the work in hours' -
sequenceIntegerdefault=10 -
signatureImagecopy=Falsemax_height=1024max_width=1024readonly=True -
signed_byCharcopy=Falsereadonly=True -
signed_onDatetimecopy=Falsereadonly=True -
stage_idMany2one → fsm.stagecopy=Falsedefault=<expr>group_expand='_read_group_stage_ids'index=Truestring='Stage'tracking=True args: 'fsm.stage' -
stage_nameCharrelated='stage_id.name'string='Stage Name' -
state_nameCharrelated='location_id.state_id.name'string='State' -
streetCharrelated='location_id.street' -
street2Charrelated='location_id.street2' -
tag_idsMany2many → fsm.taghelp='Classify and analyze your orders'string='Tags' args: 'fsm.tag', 'fsm_order_tag_rel', 'fsm_order_id', 'tag_id' -
team_idMany2one → fsm.teamcompute='_compute_team_id'index=Trueprecompute=Truereadonly=Falserequired=Truestore=Truestring='Team'tracking=True args: 'fsm.team' -
template_idMany2one → fsm.templatestring='Template' args: 'fsm.template' -
territory_idMany2one → res.territoryrelated='location_id.territory_id'store=Truestring='Territory' args: 'res.territory' -
todoHtmlcompute='_compute_todo'precompute=Truereadonly=Falsestore=Truestring='Instructions' -
typeMany2one → fsm.order.typeargs: 'fsm.order.type' -
zipCharrelated='location_id.zip'
-
action_cancel(self) -
action_complete(self) -
can_unlink(self):return True if the order can be deleted, False otherwise -
check_day(self)@api.constrains('scheduled_date_start') -
create(self, vals_list)@api.model_create_multi -
onchange_scheduled_date_end(self)@api.onchange('scheduled_date_end') -
onchange_scheduled_duration(self)@api.onchange('scheduled_date_start', 'scheduled_duration') -
write(self, vals)
New fields (3)
-
order_idMany2one → fsm.ordercomodel_name='fsm.order'ondelete='cascade'required=Truestring='Order' -
signatureImagemax_height=1024max_width=1024required=True -
signed_byCharrequired=True
-
action_sign(self) -
default_get(self, fields)
New fields (2)
-
internal_typeSelectiondefault='fsm'selection=[('fsm', 'FSM')] -
nameCharrequired=True
No public methods.
New fields (9)
-
activeBooleandefault=True -
active_partnerBooleanreadonly=Truerelated='partner_id.active'string='Partner is Active' -
calendar_idMany2one → resource.calendarstring='Working Schedule' args: 'resource.calendar' -
category_idsMany2many → fsm.categorystring='Categories' args: 'fsm.category' -
mobileChar -
partner_idMany2one → res.partnerbypass_search_access=Truedelegate=Trueondelete='restrict'required=Truestring='Related Partner' args: 'res.partner' -
state_idMany2onedomain="[('country_id', '=?', country_id)]"inherited=Truereadonly=Falserelated='partner_id.state_id'store=True -
team_idMany2one → fsm.teamstring='Team' args: 'fsm.team' -
territory_idsMany2many → res.territorystring='Territories' args: 'res.territory'
-
action_unarchive(self) -
create(self, vals_list)@api.model_create_multi
New fields (1)
-
location_idsOne2many → fsm.location.personstring='Linked Locations' args: 'fsm.location.person', 'person_id'
No public methods.
New fields (4)
-
activeBooleandefault=True -
person_checkedBooleandefault=True -
person_idMany2one → fsm.personrequired=True args: 'fsm.person', 'FSM Worker' -
user_idMany2one → res.usersdefault=<expr>ondelete='cascade'required=True args: 'res.users', 'Me'
No public methods.
New fields (13)
-
activeBooleandefault=True -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
custom_colorChardefault='#FFFFFF'help='Use Hex Code only Ex:-#FFFFFF' args: 'Color Code' -
descriptionTexttranslate=True -
foldBooleanhelp='This stage is folded in the kanban view when there are no record in that stage to display.' args: 'Folded in Kanban' -
is_closedBooleanhelp='Services in this stage are considered as closed.' args: 'Is a close stage' -
is_defaultBooleanhelp='Used a default stage' args: 'Is a default stage' -
legend_priorityTexthelp='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' -
nameCharrequired=Truetranslate=True -
require_signatureBooleanhelp='Whether to ask for a Customer Signature when the order is in this stage.' -
sequenceIntegerdefault=1help='Used to order stages. Lower is better.' -
stage_typeSelectiondefault='order'required=True args: [('order', 'Order'), ('equipment', 'Equipment'), ('location', 'Location'), ('worker', 'Worker')], 'Type' -
team_idsMany2many → fsm.teamdefault=<expr>string='Teams' args: 'fsm.team', 'order_team_stage_rel', 'stage_id', 'team_id'
-
create(self, vals_list)@api.model_create_multi -
get_color_information(self)
New fields (5)
-
colorIntegerdefault=10 args: 'Color Index' -
company_idMany2one → res.companydefault=<expr>help='Company related to this tag'index=Truerequired=Truestring='Company' args: 'res.company' -
full_nameCharcompute='_compute_full_name' -
nameCharrequired=True -
parent_idMany2one → fsm.tagstring='Parent' args: 'fsm.tag'
No public methods.
New fields (11)
-
activeBooleandefault=True -
colorIntegerargs: 'Color Index' -
company_idMany2one → res.companydefault=<expr>help='Company related to this team'index=Truerequired=Truestring='Company' args: 'res.company' -
descriptionTexttranslate=True -
nameCharrequired=Truetranslate=True -
order_countIntegercompute='_compute_order_count'string='Orders Count' -
order_idsOne2many → fsm.orderdomain=Domain('stage_id.is_closed', '=', False)string='Orders' args: 'fsm.order', 'team_id' -
order_need_assign_countIntegercompute='_compute_order_need_assign_count'string='Orders to Assign' -
order_need_schedule_countIntegercompute='_compute_order_need_schedule_count'string='Orders to Schedule' -
sequenceIntegerdefault=1help='Used to sort teams. Lower is better.' -
stage_idsMany2many → fsm.stagedefault=<expr>string='Stages' args: 'fsm.stage', 'order_team_stage_rel', 'team_id', 'stage_id'
No public methods.
New fields (7)
-
category_idsMany2many → fsm.categorystring='Categories' args: 'fsm.category' -
company_idMany2one → res.companyhelp='Company related to this template'index=Truestring='Company' args: 'res.company' -
durationFloathelp='Default duration in hours' -
instructionsHtml -
nameCharrequired=True -
team_idMany2one → fsm.teamhelp='Choose a team to be set on orders of this template'string='Team' args: 'fsm.team' -
type_idMany2one → fsm.order.typestring='Type' args: 'fsm.order.type'
No public methods.
New fields (1)
-
fsm_record_typeSelectionargs: [('person', 'Worker'), ('location', 'Location')], 'Record Type'
-
action_convert(self) -
action_convert_location(self, partner) -
action_convert_person(self, partner) -
action_other_address(self, partner)
New fields (7)
-
auto_populate_equipments_on_orderBooleanstring='Auto-populate Equipments on Order based on Location' -
auto_populate_persons_on_locationBooleanstring='Auto-populate Workers on Location based on Territory' -
fsm_order_request_late_highFloatdefault=8string='Hours of Buffer for High Priority FS Orders' -
fsm_order_request_late_lowFloatdefault=48string='Hours of Buffer for Low Priority FS Orders' -
fsm_order_request_late_lowestFloatdefault=72string='Hours of Buffer for Lowest Priority FS Orders' -
fsm_order_request_late_mediumFloatdefault=24string='Hours of Buffer for Medium Priority FS Orders' -
search_on_complete_nameBooleanstring='Search Location By Hierarchy'
No public methods.
New fields (38)
-
auto_populate_equipments_on_orderBooleanreadonly=Falserelated='company_id.auto_populate_equipments_on_order'string='Auto-populate equipments on Order based on the Location' -
auto_populate_persons_on_locationBooleanreadonly=Falserelated='company_id.auto_populate_persons_on_location'string='Auto-populate Workers on Location based on Territory' -
fsm_order_request_late_highFloatreadonly=Falserelated='company_id.fsm_order_request_late_high'string='Hours of Buffer for High Priority FS Orders' -
fsm_order_request_late_lowFloatreadonly=Falserelated='company_id.fsm_order_request_late_low'string='Hours of Buffer for Low Priority FS Orders' -
fsm_order_request_late_lowestFloatreadonly=Falserelated='company_id.fsm_order_request_late_lowest'string='Hours of Buffer for Lowest Priority FS Orders' -
fsm_order_request_late_mediumFloatreadonly=Falserelated='company_id.fsm_order_request_late_medium'string='Hours of Buffer for Medium Priority FS Orders' -
group_fsm_categoryBooleanimplied_group='fieldservice.group_fsm_category'string='Manage Categories' -
group_fsm_equipmentBooleanimplied_group='fieldservice.group_fsm_equipment'string='Manage Equipment' -
group_fsm_tagBooleanimplied_group='fieldservice.group_fsm_tag'string='Manage Tags' -
group_fsm_teamBooleanimplied_group='fieldservice.group_fsm_team'string='Manage Teams' -
group_fsm_templateBooleanimplied_group='fieldservice.group_fsm_template'string='Manage Template' -
group_fsm_territoryBooleanimplied_group='fieldservice.group_fsm_territory'string='Manage Territory' -
module_fieldservice_accountBooleanstring='Invoice your FSM orders' -
module_fieldservice_activityBooleanstring='Manage FSM Activities' -
module_fieldservice_agreementBooleanstring='Manage Agreements' -
module_fieldservice_change_managementBooleanstring='Change Management' -
module_fieldservice_crmBooleanstring='CRM' -
module_fieldservice_distributionBooleanstring='Manage Distribution' -
module_fieldservice_fleetBooleanstring='Link FSM vehicles to Fleet vehicles' -
module_fieldservice_geoengineBooleanstring='Use GeoEngine' -
module_fieldservice_google_mapBooleanstring='Allow Field Service Google Map' -
module_fieldservice_location_builderBooleanstring='Use FSM Location Builder' -
module_fieldservice_maintenanceBooleanstring='Link FSM orders to maintenance requests' -
module_fieldservice_projectBooleanstring='Projects and Tasks' -
module_fieldservice_purchaseBooleanstring='Manage subcontractors and their pricelists' -
module_fieldservice_recurringBooleanstring='Manage Recurring Orders' -
module_fieldservice_repairBooleanstring='Link FSM orders to MRP Repair orders' -
module_fieldservice_routeBooleanstring='Manage routes' -
module_fieldservice_route_accountBooleanstring='Check the amount collected during the route' -
module_fieldservice_route_stockBooleanstring='Check the inventory of the vehicle at the end of the route' -
module_fieldservice_saleBooleanstring='Sell FSM orders' -
module_fieldservice_sizeBooleanstring='Manage sizes for orders and locations' -
module_fieldservice_skillBooleanstring='Manage Skills' -
module_fieldservice_stockBooleanstring='Use Odoo Logistics' -
module_fieldservice_substatusBooleanstring='Manage Sub-Statuses' -
module_fieldservice_timelineBooleanstring='Allow Field Service Web Timeline View' -
module_fieldservice_vehicleBooleanstring='Manage Vehicles' -
search_on_complete_nameBooleanreadonly=Falserelated='company_id.search_on_complete_name'string='Search Location By Hierarchy'
No public methods.
New fields (7)
-
fsm_locationBooleanargs: 'Is a FS Location' -
fsm_location_idsOne2many → fsm.locationcomodel_name='fsm.location'inverse_name='partner_id'readonly=Truestring='Related FS Location' -
fsm_personBooleanargs: 'Is a FS Worker' -
owned_location_countIntegercompute='_compute_owned_location_count'string='# of Owned Locations' -
owned_location_idsOne2many → fsm.locationdomain=Domain('parent_id', '=', False)string='Owned Locations' args: 'fsm.location', 'owner_id' -
service_location_idMany2one → fsm.locationstring='Primary Service Location' args: 'fsm.location' -
typeSelectionselection_add=[('fsm_location', 'Location')]
-
action_fsm_convert_to_location(self) -
action_fsm_convert_to_person(self) -
action_open_owned_locations(self) -
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (2)
-
person_idMany2one → fsm.personstring='Primary Assignment' args: 'fsm.person' -
person_idsMany2many → fsm.personstring='Field Service Workers' args: 'fsm.person'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…