Transport

tms
REPOSITORY
REPOSITORYOCA/stock-logistics-transport
GIT
GIThttps://github.com/OCA/stock-logistics-transport.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-transport/tree/19.0/tms
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTMS
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSMaxime Chambreuil, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-transport
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - uom
    - fleet
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The Transport Management Systems (TMS) module manages the workflow of creating transport
operations within Odoo. This module provides features such as creating teams, stages,
crews, routes, and vehicles, allowing businesses to efficiently handle various aspects
of their transport operations.

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
fleet_vehicle_inherit_view_form fleet.vehicle.inherit.view.form fleet.vehicle xpath Inherits fleet.fleet_vehicle_view_form
res_config_settings_view_form res.config.settings.view.form.inherit.tms res.config.settings xpath Inherits base.res_config_settings_view_form
tms_crew_view_form tms.crew.view.form tms.crew form New
tms_crew_view_kanban tms.crew.view.kanban tms.crew kanban New
tms_insurance_view_form tms.insurance.view.form tms.insurance form New
tms_insurance_view_list tms.insurance.view.list tms.insurance list New
tms_order_report_view_graph tms.order.report.view.graph tms.order graph New
tms_order_view_form tms.order.view.form tms.order form New
tms_order_view_kanban tms.order.view.kanban tms.order kanban New
tms_order_view_list tms.order.view.list tms.order list New
tms_order_view_pivot tms.order.view.pivot tms.order pivot New
tms_route_view_list tms.route.view.list tms.route list New
tms_stage_form_view tms.stage.form tms.stage form New
tms_stage_list_view tms.stage.list tms.stage list New
tms_team_view_form tms.team.view.form tms.team form New
tms_team_view_kanban tms.team.kanban tms.team kanban New
view_res_partner_form_inherit_tms_location res.partner.form.inherit.tms.location res.partner xpath Inherits base.view_partner_form
view_res_partner_list_tms_location res.partner.list.tms.location res.partner list New
view_res_partner_search_inherit res.partner.search.inherit res.partner search New
view_tms_crew_search tms.crew.search tms.crew search New
view_tms_driver_form_inherit tms.driver.form.inherit tms.driver xpath Inherits base.view_partner_form
view_tms_driver_kanban tms.driver.view.kanban tms.driver kanban New
view_tms_driver_list tms.driver.list tms.driver list New
view_tms_order_search tms.order.search tms.order search New
view_tms_route_form tms.route.form tms.route form New
view_tms_route_search tms.route.search tms.route search New
view_tms_stage_search tms.stage.search tms.stage search New
view_tms_team_search tms.team.search tms.team search New
Models touched (10)

New fields (6)
  • capacity Float
  • cargo_uom_id Many2one → uom.uom
    default=<expr> domain=<expr> args: 'uom.uom'
  • insurance_id Many2many → tms.insurance
    args: 'tms.insurance'
  • operation Selection
    args: [('cargo', 'Cargo'), ('passenger', 'Passenger')]
  • tms_driver_id Many2one → tms.driver
    string='Driver Id' args: 'tms.driver'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
Public methods (0)

No public methods.

New fields (19)
  • driver_license_security_days Integer
    config_parameter='tms.default_driver_license_security_days' required=True string='Driver license security days'
  • group_tms_crew Boolean
    implied_group='tms.group_tms_crew' string='Manage Crews'
  • group_tms_driver_license Boolean
    implied_group='tms.group_tms_driver_license' string='Manage Driver License'
  • group_tms_route Boolean
    implied_group='tms.group_tms_route' string='Manage Routes'
  • group_tms_route_stop Boolean
    implied_group='tms.group_tms_route_stop' string='Manage Route Stops'
  • group_tms_team Boolean
    implied_group='tms.group_tms_team' string='Manage Teams'
  • group_tms_uom Boolean
    implied_group='uom.group_uom' string='TMS Units of Measure'
  • group_tms_vehicle_insurance Boolean
    implied_group='tms.group_tms_vehicle_insurance' string='Manage Vehicle Insurance'
  • module_tms_account Boolean
    string='Manage trip invoicing'
  • module_tms_account_asset Boolean
    string='Manage vehicle as accounting assets'
  • module_tms_expense Boolean
    string='Manage trip expenses'
  • module_tms_purchase Boolean
    string='Manage trip purchases'
  • module_tms_sale Boolean
    string='Manage trip sales'
  • tms_distance_uom Many2one → uom.uom
    config_parameter='tms.default_distance_uom' default=<expr> default_model='res.config.settings' domain=<expr> args: 'uom.uom'
  • tms_length_uom Many2one → uom.uom
    config_parameter='tms.default_length_uom' default=<expr> default_model='res.config.settings' domain=<expr> args: 'uom.uom'
  • tms_speed_uom Many2one → uom.uom
    config_parameter='tms.default_speed_uom' default=<expr> default_model='res.config.settings' domain=<expr> args: 'uom.uom'
  • tms_time_uom Many2one → uom.uom
    config_parameter='tms.default_time_uom' default=<expr> default_model='res.config.settings' domain=<expr> args: 'uom.uom'
  • tms_weight_uom Many2one → uom.uom
    config_parameter='tms.default_weight_uom' default=<expr> default_model='res.config.settings' domain=<expr> args: 'uom.uom'
  • vehicle_insurance_security_days Integer
    config_parameter='tms.default_vehicle_insurance_security_days' required=True string='Vehicle Insurance security days'
Public methods (0)

No public methods.

New fields (2)
  • location_type Selection
    selection=LOCATION_TYPES
  • tms_location Boolean
    string='Transport location'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • default_vehicle_id Many2one → fleet.vehicle
    string='Default Vehicle' args: 'fleet.vehicle'
  • description Text
  • driver_ids Many2many → tms.driver
    required=True string='Drivers' args: 'tms.driver', 'tms_crew_drivers_rel'
  • name Char
    required=True
  • personnel_ids Many2many → res.partner
    string='Other Personnel' args: 'res.partner', 'tms_crew_personnel_rel'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
Public methods (0)

No public methods.

New fields (17)
  • crew_ids Many2many → tms.crew
    string='Crews' args: 'tms.crew', 'tms_crew_drivers_rel'
  • distance_traveled Integer
  • distance_traveled_uom Selection
    default='km' selection=[('km', 'km'), ('mi', 'mi')]
  • driver_license_expiration_date Date
  • driver_license_file Binary
  • driver_license_number Char
  • driver_license_type Selection
    selection=DRIVER_LICENSE_TYPES string='License type'
  • driver_type Selection
    selection=[('terrestrial', 'Terrestrial')] string='Type'
  • driving_experience_years Integer
  • is_active Boolean
    default=True
  • is_external Boolean
    string='External Driver'
  • is_training Boolean
    string='In Training'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner'
  • stage_id Many2one → tms.stage
    copy=False default=<expr> group_expand='_read_group_stage_ids' index=True string='Stage' args: 'tms.stage'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
  • trips_ids One2many → tms.order
    args: 'tms.order', 'driver_id'
  • vehicles_ids One2many → fleet.vehicle
    args: 'fleet.vehicle', 'driver_id'
Public methods (7)
  • action_open_employees(self)
  • create_company(self)
  • geo_localize(self)
  • mail_action_blacklist_remove(self)
  • open_commercial_entity(self)
  • phone_action_blacklist_remove(self)
  • schedule_meeting(self)

New fields (11)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this insurance' required=True string='Company' args: 'res.company'
  • coverage_details Text
  • end_date Date
    required=True
  • insurer_id Many2one → res.partner
    required=True args: 'res.partner'
  • name Char
    compute='_compute_name' copy=False default=<expr> readonly=True required=True store=True
  • policy_number Char
    required=True
  • premium_amount Float
  • start_date Date
  • state Selection
    args: [('draft', 'Draft'), ('active', 'Active'), ('expired', 'Expired'), ('cancelled', 'Cancelled')]
  • vehicle_ids Many2many → fleet.vehicle
    args: 'fleet.vehicle'
Public methods (0)

No public methods.

New fields (32)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • crew_active Boolean
    compute='_compute_active_crew' groups='tms.group_tms_crew'
  • crew_id Many2one → tms.crew
    string='Crew' args: 'tms.crew'
  • crew_ids_domain Many2many → tms.crew
    compute='_compute_crew_ids_domain' default=<expr> args: 'tms.crew', 'team_crews_rel'
  • date_end Datetime
    compute='_compute_date_end' readonly=False store=True
  • date_start Datetime
  • description Text
  • destination_id Many2one → res.partner
    compute='_compute_route_id' context={'default_tms_location': True} domain="[('tms_location', '=', 'True')]" readonly=False store=True args: 'res.partner'
  • destination_location Char
  • diff_duration Float
    readonly=True string='Scheduled Duration - Actual Duration'
  • driver_id Many2one → tms.driver
    compute='_compute_vehicle_id_set_driver' readonly=False store=True string='Driver' args: 'tms.driver'
  • driver_ids_domain Many2many → tms.driver
    compute='_compute_driver_ids_domain' args: 'tms.driver', 'team_drivers_rel'
  • duration Float
    compute='_compute_duration' readonly=False store=True string='Trip Duration'
  • end_trip Boolean
    readonly=True
  • name Char
    copy=False default=<expr> index='trigram' readonly=False required=True
  • origin_id Many2one → res.partner
    compute='_compute_route_id' context={'default_tms_location': True} domain="[('tms_location', '=', 'True')]" readonly=False store=True args: 'res.partner'
  • origin_location Char
  • route Boolean
    string='Use predefined route'
  • route_destination Char
    related='route_id.destination_location_id.display_name' string='Route destination'
  • route_id Many2one → tms.route
    compute='_compute_route_id' readonly=False store=True args: 'tms.route'
  • route_origin Char
    related='route_id.origin_location_id.display_name' string='Route origin'
  • scheduled_date_end Datetime
    compute='_compute_scheduled_date_end' readonly=False store=True string='Scheduled End'
  • scheduled_date_start Datetime
    default=datetime.now() string='Scheduled Start'
  • scheduled_duration Float
    compute='_compute_scheduled_duration' help='Scheduled duration of the work in hours' readonly=False store=True
  • sequence Integer
    default=10
  • stage_id Many2one → tms.stage
    copy=False default=<expr> domain="[('stage_type', '=', 'order')]" group_expand='_read_group_stage_ids' index=True ondelete='set null' string='Stage' args: 'tms.stage'
  • start_trip Boolean
    readonly=True
  • time_uom Many2one → uom.uom
    default=<expr> domain=<expr> args: 'uom.uom'
  • tms_team_id Many2one → tms.team
    string='Team' args: 'tms.team'
  • vehicle_id Many2one → fleet.vehicle
    string='Vehicle' args: 'fleet.vehicle'
  • vehicle_ids_domain Many2many → fleet.vehicle
    compute='_compute_vehicle_ids_domain' default=<expr> args: 'fleet.vehicle', 'team_vehicles_rel'
Public methods (4)
  • button_end_order(self)
  • button_refresh_duration(self)
  • button_start_order(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (11)
  • active Boolean
    default=True
  • destination_location_id Many2one → res.partner
    context={'default_tms_location': True} required=True string='Destination Location' args: 'res.partner'
  • distance Float
  • distance_uom Many2one → uom.uom
    default=<expr> domain=<expr> args: 'uom.uom'
  • estimated_time Float
  • estimated_time_uom Many2one → uom.uom
    default=<expr> domain=<expr> args: 'uom.uom'
  • name Char
    required=True string='Route Name'
  • notes Text
    string='Notes/Comments'
  • origin_location_id Many2one → res.partner
    context={'default_tms_location': True} required=True string='Origin Location' args: 'res.partner'
  • stop_location_ids Many2many → res.partner
    context={'default_tms_location': True} string='Stop Locations' args: 'res.partner'
  • stop_locations Boolean
    string='Stops locations in route'
Public methods (0)

No public methods.

New fields (12)
  • 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_completed Boolean
    help='Defines how this stage is evaluated as completed stage'
  • is_default Boolean
    default=False readonly=True
  • 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 first.'
  • stage_type Selection
    required=True string='Type' args: [('driver', 'Driver'), ('order', 'Trip')]
  • tms_team_ids Many2many → tms.team
    default=<expr> string='Teams' args: 'tms.team', 'tms_order_team_stage_rel', 'stage_id', 'tms_team_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • get_color_information(self)

New fields (15)
  • active Boolean
    default=True
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • crew_ids One2many → tms.crew
    args: 'tms.crew', 'tms_team_id'
  • description Text
  • driver_count Integer
    compute='_compute_driver_count' string='Drivers Count'
  • driver_ids One2many → tms.driver
    args: 'tms.driver', 'tms_team_id'
  • name Char
    required=True
  • order_count Integer
    compute='_compute_order_count' string='Orders Count'
  • order_ids One2many → tms.order
    domain=[('stage_id.is_completed', '!=', True)] string='Orders' args: 'tms.order', 'tms_team_id'
  • sequence Integer
    default=1 help='Used to sort teams. Lower is better.'
  • stage_ids Many2many → tms.stage
    default=<expr> string='Stages' args: 'tms.stage', 'tms_order_team_stage_rel', 'tms_team_id', 'stage_id'
  • trips_todo_count Integer
    compute='_compute_trips_todo_count' string='Number of Trips'
  • vehicle_count Integer
    compute='_compute_vehicle_count' string='Vehicles Count'
  • vehicle_ids One2many → fleet.vehicle
    args: 'fleet.vehicle', 'tms_team_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/stock-logistics-transport
GIT
GIThttps://github.com/OCA/stock-logistics-transport.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-transport/tree/18.0/tms
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYTMS
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, EdgarRetes, Khôi (Kiên Kim)
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-transport
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - uom
    - fleet
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The Transport Management Systems (TMS) module manages the workflow of creating transport
operations within Odoo. This module provides features such as creating teams, stages,
crews, routes, and vehicles, allowing businesses to efficiently handle various aspects
of their transport operations.

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
fleet_vehicle_inherit_view_form fleet.vehicle.inherit.view.form fleet.vehicle xpath Inherits fleet.fleet_vehicle_view_form
res_config_settings_view_form res.config.settings.view.form.inherit.tms res.config.settings xpath Inherits base.res_config_settings_view_form
tms_crew_view_form tms.crew.view.form tms.crew form New
tms_crew_view_kanban tms.crew.view.kanban tms.crew kanban New
tms_insurance_view_form tms.insurance.view.form tms.insurance form New
tms_insurance_view_list tms.insurance.view.list tms.insurance list New
tms_order_report_view_graph tms.order.report.view.graph tms.order graph New
tms_order_view_form tms.order.view.form tms.order form New
tms_order_view_kanban tms.order.view.kanban tms.order kanban New
tms_order_view_list tms.order.view.list tms.order list New
tms_order_view_pivot tms.order.view.pivot tms.order pivot New
tms_route_view_list tms.route.view.list tms.route list New
tms_stage_form_view tms.stage.form tms.stage form New
tms_stage_list_view tms.stage.list tms.stage list New
tms_team_view_form tms.team.view.form tms.team form New
tms_team_view_kanban tms.team.kanban tms.team kanban New
view_res_partner_form_inherit_tms_location res.partner.form.inherit.tms.location res.partner xpath Inherits base.view_partner_form
view_res_partner_list_tms_location res.partner.list.tms.location res.partner list New
view_res_partner_search_inherit res.partner.search.inherit res.partner search New
view_tms_crew_search tms.crew.search tms.crew search New
view_tms_driver_form_inherit tms.driver.form.inherit tms.driver xpath Inherits base.view_partner_form
view_tms_driver_kanban tms.driver.view.kanban tms.driver kanban New
view_tms_driver_list tms.driver.list tms.driver list New
view_tms_order_search tms.order.search tms.order search New
view_tms_route_form tms.route.form tms.route form New
view_tms_route_search tms.route.search tms.route search New
view_tms_stage_search tms.stage.search tms.stage search New
view_tms_team_search tms.team.search tms.team search New
Models touched (10)

New fields (6)
  • capacity Float
  • cargo_uom_id Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Volume')]" args: 'uom.uom'
  • insurance_id Many2many → tms.insurance
    args: 'tms.insurance'
  • operation Selection
    args: [('cargo', 'Cargo'), ('passenger', 'Passenger')]
  • tms_driver_id Many2one → tms.driver
    string='Driver Id' args: 'tms.driver'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
Public methods (0)

No public methods.

New fields (19)
  • driver_license_security_days Integer
    config_parameter='tms.default_driver_license_security_days' required=True string='Driver license security days'
  • group_tms_crew Boolean
    implied_group='tms.group_tms_crew' string='Manage Crews'
  • group_tms_driver_license Boolean
    implied_group='tms.group_tms_driver_license' string='Manage Driver License'
  • group_tms_route Boolean
    implied_group='tms.group_tms_route' string='Manage Routes'
  • group_tms_route_stop Boolean
    implied_group='tms.group_tms_route_stop' string='Manage Route Stops'
  • group_tms_team Boolean
    implied_group='tms.group_tms_team' string='Manage Teams'
  • group_tms_uom Boolean
    implied_group='uom.group_uom' string='TMS Units of Measure'
  • group_tms_vehicle_insurance Boolean
    implied_group='tms.group_tms_vehicle_insurance' string='Manage Vehicle Insurance'
  • module_tms_account Boolean
    string='Manage trip invoicing'
  • module_tms_account_asset Boolean
    string='Manage vehicle as accounting assets'
  • module_tms_expense Boolean
    string='Manage trip expenses'
  • module_tms_purchase Boolean
    string='Manage trip purchases'
  • module_tms_sale Boolean
    string='Manage trip sales'
  • tms_distance_uom Many2one → uom.uom
    config_parameter='tms.default_distance_uom' default=<expr> default_model='res.config.settings' domain=_length_domain args: 'uom.uom'
  • tms_length_uom Many2one → uom.uom
    config_parameter='tms.default_length_uom' default=<expr> default_model='res.config.settings' domain=_length_domain args: 'uom.uom'
  • tms_speed_uom Many2one → uom.uom
    config_parameter='tms.default_speed_uom' default=<expr> default_model='res.config.settings' domain=_speed_domain args: 'uom.uom'
  • tms_time_uom Many2one → uom.uom
    config_parameter='tms.default_time_uom' default=<expr> default_model='res.config.settings' domain=_time_domain args: 'uom.uom'
  • tms_weight_uom Many2one → uom.uom
    config_parameter='tms.default_weight_uom' default=<expr> default_model='res.config.settings' domain=_weight_domain args: 'uom.uom'
  • vehicle_insurance_security_days Integer
    config_parameter='tms.default_vehicle_insurance_security_days' required=True string='Vehicle Insurance security days'
Public methods (0)

No public methods.

New fields (2)
  • location_type Selection
    selection=LOCATION_TYPES
  • tms_location Boolean
    string='Transport location'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • default_vehicle_id Many2one → fleet.vehicle
    string='Default Vehicle' args: 'fleet.vehicle'
  • description Text
  • driver_ids Many2many → tms.driver
    required=True string='Drivers' args: 'tms.driver', 'tms_crew_drivers_rel'
  • name Char
    required=True
  • personnel_ids Many2many → res.partner
    string='Other Personnel' args: 'res.partner', 'tms_crew_personnel_rel'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
Public methods (0)

No public methods.

New fields (17)
  • crew_ids Many2many → tms.crew
    string='Crews' args: 'tms.crew', 'tms_crew_drivers_rel'
  • distance_traveled Integer
  • distance_traveled_uom Selection
    default='km' selection=[('km', 'km'), ('mi', 'mi')]
  • driver_license_expiration_date Date
  • driver_license_file Binary
  • driver_license_number Char
  • driver_license_type Selection
    selection=DRIVER_LICENSE_TYPES string='License type'
  • driver_type Selection
    selection=[('terrestrial', 'Terrestrial')] string='Type'
  • driving_experience_years Integer
  • is_active Boolean
    default=True
  • is_external Boolean
    string='External Driver'
  • is_training Boolean
    string='In Training'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner'
  • stage_id Many2one → tms.stage
    copy=False default=<expr> group_expand='_read_group_stage_ids' index=True string='Stage' args: 'tms.stage'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
  • trips_ids One2many → tms.order
    args: 'tms.order', 'driver_id'
  • vehicles_ids One2many → fleet.vehicle
    args: 'fleet.vehicle', 'driver_id'
Public methods (6)
  • action_open_employees(self)
  • create_company(self)
  • geo_localize(self)
  • mail_action_blacklist_remove(self)
  • open_commercial_entity(self)
  • phone_action_blacklist_remove(self)

New fields (11)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this insurance' required=True string='Company' args: 'res.company'
  • coverage_details Text
  • end_date Date
    required=True
  • insurer_id Many2one → res.partner
    required=True args: 'res.partner'
  • name Char
    compute='_compute_name' copy=False default=<expr> readonly=True required=True store=True
  • policy_number Char
    required=True
  • premium_amount Float
  • start_date Date
  • state Selection
    args: [('draft', 'Draft'), ('active', 'Active'), ('expired', 'Expired'), ('cancelled', 'Cancelled')]
  • vehicle_ids Many2many → fleet.vehicle
    args: 'fleet.vehicle'
Public methods (0)

No public methods.

New fields (32)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • crew_active Boolean
    compute='_compute_active_crew' groups='tms.group_tms_crew'
  • crew_id Many2one → tms.crew
    string='Crew' args: 'tms.crew'
  • crew_ids_domain Many2many → tms.crew
    compute='_compute_crew_ids_domain' default=<expr> args: 'tms.crew', 'team_crews_rel'
  • date_end Datetime
    compute='_compute_date_end' readonly=False store=True
  • date_start Datetime
  • description Text
  • destination_id Many2one → res.partner
    compute='_compute_route_id' context={'default_tms_location': True} domain="[('tms_location', '=', 'True')]" readonly=False store=True args: 'res.partner'
  • destination_location Char
  • diff_duration Float
    readonly=True string='Scheduled Duration - Actual Duration'
  • driver_id Many2one → tms.driver
    compute='_compute_vehicle_id_set_driver' readonly=False store=True string='Driver' args: 'tms.driver'
  • driver_ids_domain Many2many → tms.driver
    compute='_compute_driver_ids_domain' args: 'tms.driver', 'team_drivers_rel'
  • duration Float
    compute='_compute_duration' readonly=False store=True string='Trip Duration'
  • end_trip Boolean
    readonly=True
  • name Char
    copy=False default=<expr> index='trigram' readonly=False required=True
  • origin_id Many2one → res.partner
    compute='_compute_route_id' context={'default_tms_location': True} domain="[('tms_location', '=', 'True')]" readonly=False store=True args: 'res.partner'
  • origin_location Char
  • route Boolean
    string='Use predefined route'
  • route_destination Char
    related='route_id.destination_location_id.display_name' string='Route destination'
  • route_id Many2one → tms.route
    compute='_compute_route_id' readonly=False store=True args: 'tms.route'
  • route_origin Char
    related='route_id.origin_location_id.display_name' string='Route origin'
  • scheduled_date_end Datetime
    compute='_compute_scheduled_date_end' readonly=False store=True string='Scheduled End'
  • scheduled_date_start Datetime
    default=datetime.now() string='Scheduled Start'
  • scheduled_duration Float
    compute='_compute_scheduled_duration' help='Scheduled duration of the work in hours' readonly=False store=True
  • sequence Integer
    default=10
  • stage_id Many2one → tms.stage
    copy=False default=<expr> domain="[('stage_type', '=', 'order')]" group_expand='_read_group_stage_ids' index=True ondelete='set null' string='Stage' args: 'tms.stage'
  • start_trip Boolean
    readonly=True
  • time_uom Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Working Time')]" args: 'uom.uom'
  • tms_team_id Many2one → tms.team
    string='Team' args: 'tms.team'
  • vehicle_id Many2one → fleet.vehicle
    string='Vehicle' args: 'fleet.vehicle'
  • vehicle_ids_domain Many2many → fleet.vehicle
    compute='_compute_vehicle_ids_domain' default=<expr> args: 'fleet.vehicle', 'team_vehicles_rel'
Public methods (4)
  • button_end_order(self)
  • button_refresh_duration(self)
  • button_start_order(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (11)
  • active Boolean
    default=True
  • destination_location_id Many2one → res.partner
    context={'default_tms_location': True} required=True string='Destination Location' args: 'res.partner'
  • distance Float
  • distance_uom Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Length / Distance')]" args: 'uom.uom'
  • estimated_time Float
  • estimated_time_uom Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Working Time')]" args: 'uom.uom'
  • name Char
    required=True string='Route Name'
  • notes Text
    string='Notes/Comments'
  • origin_location_id Many2one → res.partner
    context={'default_tms_location': True} required=True string='Origin Location' args: 'res.partner'
  • stop_location_ids Many2many → res.partner
    context={'default_tms_location': True} string='Stop Locations' args: 'res.partner'
  • stop_locations Boolean
    string='Stops locations in route'
Public methods (0)

No public methods.

New fields (12)
  • 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_completed Boolean
    help='Defines how this stage is evaluated as completed stage'
  • is_default Boolean
    default=False readonly=True
  • 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 first.'
  • stage_type Selection
    required=True string='Type' args: [('driver', 'Driver'), ('order', 'Trip')]
  • tms_team_ids Many2many → tms.team
    default=<expr> string='Teams' args: 'tms.team', 'tms_order_team_stage_rel', 'stage_id', 'tms_team_id'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_color_information(self)
  • unlink(self)

New fields (15)
  • active Boolean
    default=True
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • crew_ids One2many → tms.crew
    args: 'tms.crew', 'tms_team_id'
  • description Text
  • driver_count Integer
    compute='_compute_driver_count' string='Drivers Count'
  • driver_ids One2many → tms.driver
    args: 'tms.driver', 'tms_team_id'
  • name Char
    required=True
  • order_count Integer
    compute='_compute_order_count' string='Orders Count'
  • order_ids One2many → tms.order
    domain=[('stage_id.is_completed', '!=', True)] string='Orders' args: 'tms.order', 'tms_team_id'
  • sequence Integer
    default=1 help='Used to sort teams. Lower is better.'
  • stage_ids Many2many → tms.stage
    default=_default_stages string='Stages' args: 'tms.stage', 'tms_order_team_stage_rel', 'tms_team_id', 'stage_id'
  • trips_todo_count Integer
    compute='_compute_trips_todo_count' string='Number of Trips'
  • vehicle_count Integer
    compute='_compute_vehicle_count' string='Vehicles Count'
  • vehicle_ids One2many → fleet.vehicle
    args: 'fleet.vehicle', 'tms_team_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/stock-logistics-transport
GIT
GIThttps://github.com/OCA/stock-logistics-transport.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-transport/tree/17.0/tms
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYTMS
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators
COMMITTERS
COMMITTERSMaxime Chambreuil, OCA-git-bot, oca-ci, EdgarRetes
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-transport
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - uom
    - fleet
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - base_geolocalize
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The Transport Management Systems (TMS) module manages the workflow of creating transport
operations within Odoo. This module provides features such as creating teams, stages,
crews, routes, and vehicles, allowing businesses to efficiently handle various aspects
of their transport operations.

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
fleet_vehicle_inherit_view_form fleet.vehicle.inherit.view.form fleet.vehicle xpath Inherits fleet.fleet_vehicle_view_form
res_config_settings_view_form res.config.settings.view.form.inherit.tms res.config.settings xpath Inherits base.res_config_settings_view_form
tms_crew_view_form tms.crew.view.form tms.crew form New
tms_crew_view_kanban tms.crew.view.kanban tms.crew kanban New
tms_insurance_view_form tms.insurance.view.form tms.insurance form New
tms_insurance_view_tree tms.insurance.view.tree tms.insurance tree New
tms_order_report_view_graph tms.order.report.view.graph tms.order graph New
tms_order_view_form tms.order.view.form tms.order form New
tms_order_view_kanban tms.order.view.kanban tms.order kanban New
tms_order_view_pivot tms.order.view.pivot tms.order pivot New
tms_order_view_tree tms.order.view.tree tms.order tree New
tms_route_view_tree tms.route.view.tree tms.route tree New
tms_stage_form_view tms.stage.form tms.stage form New
tms_stage_tree_view tms.stage.tree tms.stage tree New
tms_team_view_form tms.team.view.form tms.team form New
tms_team_view_kanban tms.team.kanban tms.team kanban New
view_res_partner_form_inherit_tms_location res.partner.form.inherit.tms.location res.partner xpath Inherits base.view_partner_form
view_res_partner_search_inherit res.partner.search.inherit res.partner search New
view_res_partner_tree_tms_location res.partner.tree.tms.location res.partner tree New
view_tms_crew_search tms.crew.search tms.crew search New
view_tms_driver_form_inherit tms.driver.form.inherit tms.driver xpath Inherits base.view_partner_form
view_tms_driver_kanban tms.driver.view.kanban tms.driver kanban New
view_tms_driver_tree tms.driver.tree tms.driver tree New
view_tms_order_search tms.order.search tms.order search New
view_tms_route_form tms.route.form tms.route form New
view_tms_route_search tms.route.search tms.route search New
view_tms_stage_search tms.stage.search tms.stage search New
view_tms_team_search tms.team.search tms.team search New
Models touched (10)

New fields (6)
  • capacity Float
  • cargo_uom_id Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Volume')]" args: 'uom.uom'
  • insurance_id Many2many → tms.insurance
    args: 'tms.insurance'
  • operation Selection
    args: [('cargo', 'Cargo'), ('passenger', 'Passenger')]
  • tms_driver_id Many2one → tms.driver
    string='Driver' args: 'tms.driver'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
Public methods (0)

No public methods.

New fields (19)
  • driver_license_security_days Integer
    config_parameter='tms.default_driver_license_security_days' required=True string='Driver license security days'
  • group_tms_crew Boolean
    implied_group='tms.group_tms_crew' string='Manage Crews'
  • group_tms_driver_license Boolean
    implied_group='tms.group_tms_driver_license' string='Manage Driver License'
  • group_tms_route Boolean
    implied_group='tms.group_tms_route' string='Manage Routes'
  • group_tms_route_stop Boolean
    implied_group='tms.group_tms_route_stop' string='Manage Route Stops'
  • group_tms_team Boolean
    implied_group='tms.group_tms_team' string='Manage Teams'
  • group_tms_uom Boolean
    implied_group='uom.group_uom' string='Units of Measure'
  • group_tms_vehicle_insurance Boolean
    implied_group='tms.group_tms_vehicle_insurance' string='Manage Vehicle Insurance'
  • module_tms_account Boolean
    string='Manage trip invoicing'
  • module_tms_account_asset Boolean
    string='Manage vehicle as accounting assets'
  • module_tms_expense Boolean
    string='Manage trip expenses'
  • module_tms_purchase Boolean
    string='Manage trip purchases'
  • module_tms_sale Boolean
    string='Manage trip sales'
  • tms_distance_uom Many2one → uom.uom
    config_parameter='tms.default_distance_uom' default=<expr> default_model='res.config.settings' domain=_length_domain args: 'uom.uom'
  • tms_length_uom Many2one → uom.uom
    config_parameter='tms.default_length_uom' default=<expr> default_model='res.config.settings' domain=_length_domain args: 'uom.uom'
  • tms_speed_uom Many2one → uom.uom
    config_parameter='tms.default_speed_uom' default=<expr> default_model='res.config.settings' domain=_speed_domain args: 'uom.uom'
  • tms_time_uom Many2one → uom.uom
    config_parameter='tms.default_time_uom' default=<expr> default_model='res.config.settings' domain=_time_domain args: 'uom.uom'
  • tms_weight_uom Many2one → uom.uom
    config_parameter='tms.default_weight_uom' default=<expr> default_model='res.config.settings' domain=_weight_domain args: 'uom.uom'
  • vehicle_insurance_security_days Integer
    config_parameter='tms.default_vehicle_insurance_security_days' required=True string='Vehicle Insurance security days'
Public methods (0)

No public methods.

New fields (2)
  • location_type Selection
    selection=LOCATION_TYPES
  • tms_location Boolean
    string='Transport location'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • default_vehicle_id Many2one → fleet.vehicle
    string='Default Vehicle' args: 'fleet.vehicle'
  • description Text
  • driver_ids Many2many → tms.driver
    required=True string='Drivers' args: 'tms.driver', 'tms_crew_drivers_rel'
  • name Char
    required=True
  • personnel_ids Many2many → res.partner
    string='Other Personnel' args: 'res.partner', 'tms_crew_personnel_rel'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
Public methods (0)

No public methods.

New fields (17)
  • crew_ids Many2many → tms.crew
    string='Crews' args: 'tms.crew', 'tms_crew_drivers_rel'
  • distance_traveled Integer
  • distance_traveled_uom Selection
    default='km' selection=[('km', 'km'), ('mi', 'mi')]
  • driver_license_expiration_date Date
  • driver_license_file Binary
  • driver_license_number Char
  • driver_license_type Selection
    selection=DRIVER_LICENSE_TYPES string='License type'
  • driver_type Selection
    selection=[('terrestrial', 'Terrestrial')] string='Type'
  • driving_experience_years Integer
  • is_active Boolean
    default=True
  • is_external Boolean
    string='External Driver'
  • is_training Boolean
    string='In Training'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner'
  • stage_id Many2one → tms.stage
    copy=False default=<expr> group_expand='_read_group_stage_ids' index=True string='Stage' args: 'tms.stage'
  • tms_team_id Many2one → tms.team
    args: 'tms.team'
  • trips_ids One2many → tms.order
    args: 'tms.order', 'driver_id'
  • vehicles_ids One2many → fleet.vehicle
    args: 'fleet.vehicle', 'driver_id'
Public methods (7)
  • action_open_employees(self)
  • create_company(self)
  • geo_localize(self)
  • mail_action_blacklist_remove(self)
  • open_commercial_entity(self)
  • phone_action_blacklist_remove(self)
  • schedule_meeting(self)

New fields (11)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this insurance' required=True string='Company' args: 'res.company'
  • coverage_details Text
  • end_date Date
    required=True
  • insurer_id Many2one → res.partner
    required=True args: 'res.partner'
  • name Char
    compute='_compute_name' copy=False default=<expr> readonly=True required=True store=True
  • policy_number Char
    required=True
  • premium_amount Float
  • start_date Date
  • state Selection
    args: [('draft', 'Draft'), ('active', 'Active'), ('expired', 'Expired'), ('cancelled', 'Cancelled')]
  • vehicle_ids Many2many → fleet.vehicle
    args: 'fleet.vehicle'
Public methods (0)

No public methods.

New fields (32)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • crew_active Boolean
    compute='_compute_active_crew' groups='tms.group_tms_crew'
  • crew_id Many2one → tms.crew
    string='Crew' args: 'tms.crew'
  • crew_ids_domain Many2many → tms.crew
    compute='_compute_crew_ids_domain' default=<expr> args: 'tms.crew', 'team_crews_rel'
  • date_end Datetime
    compute='_compute_date_end' readonly=False store=True
  • date_start Datetime
  • description Text
  • destination_id Many2one → res.partner
    compute='_compute_route_id' context={'default_tms_location': True} domain="[('tms_location', '=', 'True')]" readonly=False store=True args: 'res.partner'
  • destination_location Char
    string='Destination'
  • diff_duration Float
    readonly=True string='Scheduled Duration - Actual Duration'
  • driver_id Many2one → tms.driver
    compute='_compute_vehicle_id_set_driver' readonly=False store=True string='Driver' args: 'tms.driver'
  • driver_ids_domain Many2many → tms.driver
    compute='_compute_driver_ids_domain' args: 'tms.driver', 'team_drivers_rel'
  • duration Float
    compute='_compute_duration' readonly=False store=True string='Trip Duration'
  • end_trip Boolean
    readonly=True
  • name Char
    copy=False default=<expr> index='trigram' readonly=False required=True
  • origin_id Many2one → res.partner
    compute='_compute_route_id' context={'default_tms_location': True} domain="[('tms_location', '=', 'True')]" readonly=False store=True args: 'res.partner'
  • origin_location Char
    string='Origin'
  • route Boolean
    string='Use predefined route'
  • route_destination Char
    related='route_id.destination_location_id.display_name'
  • route_id Many2one → tms.route
    compute='_compute_route_id' readonly=False store=True args: 'tms.route'
  • route_origin Char
    related='route_id.origin_location_id.display_name'
  • scheduled_date_end Datetime
    compute='_compute_scheduled_date_end' readonly=False store=True string='Scheduled End'
  • scheduled_date_start Datetime
    default=datetime.now() string='Scheduled Start'
  • scheduled_duration Float
    compute='_compute_scheduled_duration' help='Scheduled duration of the work in hours' readonly=False store=True
  • sequence Integer
    default=10
  • stage_id Many2one → tms.stage
    copy=False default=<expr> domain="[('stage_type', '=', 'order')]" group_expand='_read_group_stage_ids' index=True ondelete='set null' string='Stage' args: 'tms.stage'
  • start_trip Boolean
    readonly=True
  • time_uom Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Working Time')]" args: 'uom.uom'
  • tms_team_id Many2one → tms.team
    string='Team' args: 'tms.team'
  • vehicle_id Many2one → fleet.vehicle
    string='Vehicle' args: 'fleet.vehicle'
  • vehicle_ids_domain Many2many → fleet.vehicle
    compute='_compute_vehicle_ids_domain' default=<expr> args: 'fleet.vehicle', 'team_vehicles_rel'
Public methods (4)
  • button_end_order(self)
  • button_refresh_duration(self)
  • button_start_order(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (11)
  • active Boolean
    default=True
  • destination_location_id Many2one → res.partner
    context={'default_tms_location': True} required=True string='Destination Location' args: 'res.partner'
  • distance Float
  • distance_uom Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Length / Distance')]" args: 'uom.uom'
  • estimated_time Float
  • estimated_time_uom Many2one → uom.uom
    default=<expr> domain="[('category_id', '=', 'Working Time')]" args: 'uom.uom'
  • name Char
    required=True string='Route Name'
  • notes Text
    string='Notes/Comments'
  • origin_location_id Many2one → res.partner
    context={'default_tms_location': True} required=True string='Origin Location' args: 'res.partner'
  • stop_location_ids Many2many → res.partner
    context={'default_tms_location': True} string='Stop Locations' args: 'res.partner'
  • stop_locations Boolean
    string='Stops locations in route'
Public methods (0)

No public methods.

New fields (12)
  • 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_completed Boolean
    help='Defines how this stage is evaluated as completed stage'
  • is_default Boolean
    default=False readonly=True
  • 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 first.'
  • stage_type Selection
    required=True string='Type' args: [('driver', 'Driver'), ('order', 'Trip')]
  • tms_team_ids Many2many → tms.team
    default=<expr> string='Teams' args: 'tms.team', 'tms_order_team_stage_rel', 'stage_id', 'tms_team_id'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_color_information(self)
  • unlink(self)

New fields (15)
  • active Boolean
    default=True
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> help='Company related to this order' index=True required=True string='Company' args: 'res.company'
  • crew_ids One2many → tms.crew
    args: 'tms.crew', 'tms_team_id'
  • description Text
  • driver_count Integer
    compute='_compute_driver_count' string='Drivers Count'
  • driver_ids One2many → tms.driver
    args: 'tms.driver', 'tms_team_id'
  • name Char
    required=True
  • order_count Integer
    compute='_compute_order_count' string='Orders Count'
  • order_ids One2many → tms.order
    domain=[('stage_id.is_completed', '!=', True)] string='Orders' args: 'tms.order', 'tms_team_id'
  • sequence Integer
    default=1 help='Used to sort teams. Lower is better.'
  • stage_ids Many2many → tms.stage
    default=_default_stages string='Stages' args: 'tms.stage', 'tms_order_team_stage_rel', 'tms_team_id', 'stage_id'
  • trips_todo_count Integer
    compute='_compute_trips_todo_count' string='Number of Trips'
  • vehicle_count Integer
    compute='_compute_vehicle_count' string='Vehicles Count'
  • vehicle_ids One2many → fleet.vehicle
    args: 'fleet.vehicle', 'tms_team_id'
Public methods (0)

No public methods.