| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-transport |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-transport.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-transport/tree/19.0/tms |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | TMS |
| 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, Weblate, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-transport |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - uom - fleet - 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
capacity
Float
cargo_uom_id
Many2one → uom.uom
default=<expr>
domain=<expr>
args: 'uom.uom'
insurance_id
Many2many → tms.insurance
operation
Selection
tms_driver_id
Many2one → tms.driver
string='Driver Id'
args: 'tms.driver'
tms_team_id
Many2one → tms.team
No public methods.
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'
No public methods.
location_type
Selection
selection=LOCATION_TYPES
tms_location
Boolean
string='Transport location'
No public methods.
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
No public methods.
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
trips_ids
One2many → tms.order
vehicles_ids
One2many → fleet.vehicle
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)
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
vehicle_ids
Many2many → fleet.vehicle
No public methods.
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'
button_end_order(self)
button_refresh_duration(self)
button_start_order(self)
create(self, vals_list)
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'
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_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'
create(self, vals_list)
get_color_information(self)
active
Boolean
default=True
color
Integer
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
description
Text
driver_count
Integer
compute='_compute_driver_count'
string='Drivers Count'
driver_ids
One2many → tms.driver
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
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-transport |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-transport.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-transport/tree/18.0/tms |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | TMS |
| 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, EdgarRetes, Khôi (Kiên Kim) |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-transport |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - uom - fleet - 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
capacity
Float
cargo_uom_id
Many2one → uom.uom
default=<expr>
domain="[('category_id', '=', 'Volume')]"
args: 'uom.uom'
insurance_id
Many2many → tms.insurance
operation
Selection
tms_driver_id
Many2one → tms.driver
string='Driver Id'
args: 'tms.driver'
tms_team_id
Many2one → tms.team
No public methods.
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'
No public methods.
location_type
Selection
selection=LOCATION_TYPES
tms_location
Boolean
string='Transport location'
No public methods.
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
No public methods.
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
trips_ids
One2many → tms.order
vehicles_ids
One2many → fleet.vehicle
action_open_employees(self)
create_company(self)
geo_localize(self)
mail_action_blacklist_remove(self)
open_commercial_entity(self)
phone_action_blacklist_remove(self)
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
vehicle_ids
Many2many → fleet.vehicle
No public methods.
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'
button_end_order(self)
button_refresh_duration(self)
button_start_order(self)
create(self, vals_list)
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'
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_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'
create(self, vals_list)
get_color_information(self)
unlink(self)
active
Boolean
default=True
color
Integer
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
description
Text
driver_count
Integer
compute='_compute_driver_count'
string='Drivers Count'
driver_ids
One2many → tms.driver
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
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-transport |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-transport.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-transport/tree/17.0/tms |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | TMS |
| 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, OCA-git-bot, oca-ci, EdgarRetes |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-transport |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - uom - fleet - 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 |
capacity
Float
cargo_uom_id
Many2one → uom.uom
default=<expr>
domain="[('category_id', '=', 'Volume')]"
args: 'uom.uom'
insurance_id
Many2many → tms.insurance
operation
Selection
tms_driver_id
Many2one → tms.driver
string='Driver'
args: 'tms.driver'
tms_team_id
Many2one → tms.team
No public methods.
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'
No public methods.
location_type
Selection
selection=LOCATION_TYPES
tms_location
Boolean
string='Transport location'
No public methods.
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
No public methods.
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
trips_ids
One2many → tms.order
vehicles_ids
One2many → fleet.vehicle
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)
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
vehicle_ids
Many2many → fleet.vehicle
No public methods.
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'
button_end_order(self)
button_refresh_duration(self)
button_start_order(self)
create(self, vals_list)
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'
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_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'
create(self, vals_list)
get_color_information(self)
unlink(self)
active
Boolean
default=True
color
Integer
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
description
Text
driver_count
Integer
compute='_compute_driver_count'
string='Drivers Count'
driver_ids
One2many → tms.driver
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
No public methods.