Repository
OCA/field-service · module folder · Try on Runboat
Module version
1.0.0
Category
Field Service
Folder size
0.29 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/field-service
Last tracking update
2026-08-07 09:06:25
Authors
Odoo Community Association (OCA), Gray Matter Logic
Maintainers
Odoo Community Association (OCA), Gray Matter Logic
Committers
Maxime Chambreuil, OCA-git-bot, oca-ci
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
fieldservice_availability
Description
A Field Service route is the sorted list of orders that one
worker/vehicle will perform during a day.

This module allows you to manage your Field Service routes: when
assigning an order to a worker and scheduling it, a route is
automatically created for that worker and day.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
fsm_location_form_view_route_inherit fsm.location.form fsm.location form Inherits fieldservice.fsm_location_form_view
fsm_order_form_inherit_route fsm.order.form fsm.order form Inherits fieldservice.fsm_order_form
fsm_route_day_form_view Route Day fsm.route.day form New
fsm_route_day_list_view Route Day fsm.route.day list New
fsm_route_dayroute_calendar fsm.route.dayroute.calendar fsm.route.dayroute calendar New
fsm_route_dayroute_form fsm.route.dayroute.form fsm.route.dayroute form New
fsm_route_dayroute_graph_view fsm.route.graph fsm.route.dayroute graph New
fsm_route_dayroute_list fsm.route.dayroute.list fsm.route.dayroute list New
fsm_route_dayroute_pivot_view fsm.route.pivot fsm.route.dayroute pivot New
fsm_route_form fsm.route.form fsm.route form New
fsm_route_list fsm.route.list fsm.route list New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (6)

New fields (1)
  • fsm_route_id Many2one → fsm.route
    comodel_name='fsm.route' string='Route'
Public methods (1)
  • write(self, vals)

New fields (3)
  • dayroute_id Many2one → fsm.route.dayroute
    comodel_name='fsm.route.dayroute' index=True string='Day Route'
  • fsm_route_id Many2one
    related='location_id.fsm_route_id' string='Route'
  • person_id Many2one → fsm.person
    comodel_name='fsm.person' compute='_compute_person_id' index=True readonly=False store=True string='Assigned To'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • prepare_dayroute_values(self, values)
  • write(self, vals)

New fields (4)
  • day_ids Many2many → fsm.route.day
    comodel_name='fsm.route.day' string='Days'
  • fsm_person_id Many2one → fsm.person
    comodel_name='fsm.person' string='Person'
  • max_order Integer
    default=0 help='Maximum number of orders per day route.' string='Maximum Orders'
  • name Char
    required=True
Public methods (2)
  • run_on(self, date)
    :param date: date :return: True if the route runs on the date, False otherwise.
  • write(self, vals)

New fields (1)
  • name Selection
    selection=[('Monday', 'Monday'), ('Tuesday', 'Tuesday'), ('Wednesday', 'Wednesday'), ('Thursday', 'Thursday'), ('Friday', 'Friday'), ('Saturday', 'Saturday'), ('Sunday', 'Sunday')]
Public methods (0)

No public methods.

New fields (18)
  • date Date
    required=True
  • date_start_planned Datetime
    compute='_compute_date_start_planned' readonly=False store=True string='Planned Start Time'
  • end_location_id Many2one → fsm.location
    comodel_name='fsm.location' string='End Location'
  • last_location_id Many2one → fsm.location
    comodel_name='fsm.location' string='Last Location'
  • latitude Float
  • longitude Float
  • max_allow_time Float
    default=10.0 string='Maximal Allowable Time (in hours)'
  • max_order Integer
    help='Maximum numbers of orders that can be added to this day route.' related='route_id.max_order' store=True string='Maximum Capacity'
  • name Char
    copy=False default=<expr> required=True
  • order_count Integer
    compute='_compute_order_count' store=True string='Number of Orders'
  • order_ids One2many → fsm.order
    comodel_name='fsm.order' inverse_name='dayroute_id' string='Orders'
  • order_remaining Integer
    compute='_compute_order_count' store=True string='Available Capacity'
  • person_id Many2one → fsm.person
    comodel_name='fsm.person' compute='_compute_person_id' readonly=False store=True string='Person'
  • route_id Many2one → fsm.route
    comodel_name='fsm.route' string='Route'
  • stage_id Many2one → fsm.stage
    comodel_name='fsm.stage' copy=False default=<expr> domain="[('stage_type', '=', 'route')]" index=True string='Stage'
  • start_location_id Many2one → fsm.location
    comodel_name='fsm.location' string='Start Location'
  • team_id Many2one → fsm.team
    comodel_name='fsm.team' default=<expr> string='Team'
  • work_time Float
    default=8.0 string='Time before overtime (in hours)'
Public methods (3)
  • check_capacity(self)
    @api.constrains('route_id', 'max_order', 'order_count')
  • check_day(self)
    @api.constrains('date', 'route_id')
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • stage_type Selection
    ondelete={'route': 'cascade'} selection_add=[('route', 'Route')]
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…