| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/18.0/fieldservice_sale_stock_route |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), APSL-Nagarro |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), APSL-Nagarro |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Lansana Barry |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:06 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - fieldservice_sale_stock - fieldservice_sale - fieldservice - base_territory - fieldservice_account - fieldservice_stock - fieldservice_route odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour - html_editor - sale_management - sale - sales_team - account_payment - account - onboarding - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - payment - utm - stock - barcodes_gs1_nomenclature - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module integrates the fieldservice_sale_stock and fieldservice_route modules, enabling automatic generation of FSM order day routes from sales orders. ## Requirements for Confirming a Sales Order If a sales order contains a product that generates an FSM order, the following conditions must be met before confirmation: - An FSM location must be set. - The FSM location must have an assigned route. - The FSM route must have a designated FSM person. - The FSM route must have assigned working days. ## Automatic Scheduling of FSM Orders - If the commitment_date and commitment_date_end fields **are not set** on the sale order upon confirmation, they will be automatically assigned to the next available route day based on the FSM location’s schedule. - If these fields **are set**, the FSM order will be scheduled accordingly, with validation ensuring that the commitment_date falls on a valid route day. This validation can be overridden by enabling the **"Force Schedule"** option on the FSM route to allow scheduling on any day. This module also introduces a **"Postpone Delivery"** button in the FSM order form view, allowing users to reschedule the order to the next available route day based on the FSM location’s schedule. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_order_form_inherit_product_move_ids |
fsm.order.form.inherit.test.move.ids | fsm.order | xpath | Inherits fieldservice.fsm_order_form |
view_fsm_route_form_inherit |
fsm.route.form.inherit.force_schedule | fsm.route | xpath | Inherits fieldservice_route.fsm_route_form |
view_order_form |
sale.order.form | sale.order | xpath | Inherits sale.view_order_form |
show_postpone_button
Boolean
compute='_compute_postpone_button_visibility'
store=False
action_postpone_delivery(self)
write(self, vals)
force_schedule
Boolean
help='Enable this to allow scheduling on non-route days.'
No public methods.
No new fields.
Public methods (1)check_day(self)
commitment_date_end
Datetime
compute='_compute_commitment_date_end'
copy=False
help='This is the delivery deadline date promised to the customer. If set, the delivery order will be scheduled based on this date rather than product lead times.'
inverse='_inverse_set_commitment_date_end'
store=True
string='Delivery End Date'
write(self, values)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/field-service |
| GIT | |
| GIT | https://github.com/OCA/field-service.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/field-service/tree/15.0/fieldservice_sale_stock_route |
| VERSION | |
| VERSION | 1.0.5 |
| CATEGORY | |
| CATEGORY | Field Service |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), APSL-Nagarro |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), APSL-Nagarro |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Patryk Pyczko, bobrador, ppyczko |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/field-service |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:30 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/field-service: - fieldservice_sale_stock - fieldservice_sale - fieldservice - base_territory - fieldservice_account - fieldservice_stock - fieldservice_route odoo/odoo: - base - base_geolocalize - base_setup - web - resource - contacts - bus - web_tour - sale_management - sale - sales_team - payment - account - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - utm - stock - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_order_form_inherit_product_move_ids |
fsm.order.form.inherit.test.move.ids | fsm.order | xpath | Inherits fieldservice.fsm_order_form |
view_fsm_route_form_inherit |
fsm.route.form.inherit.force_schedule | fsm.route | xpath | Inherits fieldservice_route.fsm_route_form |
view_order_form |
sale.order.form | sale.order | xpath | Inherits sale.view_order_form |
show_postpone_button
Boolean
compute='_compute_postpone_button_visibility'
store=False
action_postpone_delivery(self)
write(self, vals)
force_schedule
Boolean
help='Enable this to allow scheduling on non-route days.'
No public methods.
No new fields.
Public methods (1)check_day(self)
commitment_date_end
Datetime
compute='_compute_commitment_date_end'
copy=False
help='This is the delivery deadline date promised to the customer. If set, the delivery order will be scheduled based on this date rather than product lead times.'
inverse='_inverse_set_commitment_date_end'
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}
store=True
string='Delivery End Date'
write(self, values)