TIP: You can type at any time to perform a new search.
Field Service - Subcontracting
fieldservice_subcontracting · OCA/field-service
- Repository
- OCA/field-service · module folder · Try on Runboat
- Module version
- 1.0.0
- Category
- Field Service
- Folder size
- 0.75 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/field-service
- Last tracking update
- 2026-08-07 08:42:54
- Authors
- Odoo Community Association (OCA), Binhex
- Maintainers
- Odoo Community Association (OCA), Binhex
- Committers
- Weblate, OCA-git-bot, oca-ci, Edilio Escalona Almira
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
This module integrates Field Service with Purchasing to automate the subcontracting workflow. It allows users to: 1. Mark subcontractor vendors on partners. 2. Configure a service product on Field Service order templates. 3. Resolve the Purchase Order vendor from the assigned worker or its parent company. 4. Create draft Purchase Orders for subcontracted orders. 5. Set the Purchase Order Expected Arrival from the Field Service Order Scheduled End. 6. Keep the Purchase Order Expected Arrival synchronized when the Field Service Order planned dates change. 7. Update delivered quantities from Field Service timesheets. 8. Reassign workers on orders with linked subcontract Purchase Orders. The module uses `fieldservice_stage_server_action` to trigger automation on stage transitions.
Code Analysis ⓘ
Views touched (6)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fsm_order_cancel_confirm_form_view |
fsm.order.cancel.confirm.form | fsm.order.cancel.confirm | form | New |
fsm_order_form_view_subcontracting |
fsm.order.form.subcontracting | fsm.order | form | Inherits fieldservice.fsm_order_form |
fsm_order_reassign_confirm_form_view |
fsm.order.reassign.confirm.form | fsm.order.reassign.confirm | form | New |
fsm_partner_form_view_subcontracting |
res.partner.form.subcontracting | res.partner | form | Inherits fieldservice.fsm_partner_fields |
fsm_template_form_view_subcontracting |
fsm.template.form.subcontracting | fsm.template | form | Inherits fieldservice.fsm_template_form_view |
purchase_order_form_view_subcontracting |
purchase.order.form.subcontracting | purchase.order | form | Inherits purchase.purchase_order_form |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (6)
New fields (3)
-
purchase_order_countIntegercompute='_compute_purchase_order_count' -
purchase_order_idsOne2many → purchase.ordercomodel_name='purchase.order'help='Purchase Order auto-created when this FSO was assigned to a subcontractor worker.'inverse_name='fsm_order_id'string='Subcontract POs' -
reassign_workerBooleancompute='_compute_reassign_worker'help='Determine if a worker reassignment can be performed.'
-
action_cancel(self)Ask how to handle active subcontract POs before cancelling the FSO. -
action_open_reassign_confirm(self)Open the reassignment confirmation wizard. -
action_view_purchase_order(self)Smart button action to open linked Purchase Orders. -
write(self, vals)
New fields (3)
-
fsm_order_idMany2one → fsm.ordercomodel_name='fsm.order'readonly=Truerequired=Truestring='Field Service Order' -
purchase_order_idsMany2many → purchase.ordercomodel_name='purchase.order'compute='_compute_purchase_order_ids'readonly=Truestring='Purchase Orders' -
warning_messageTextcompute='_compute_warning_message'
-
action_cancel_fsm_and_purchase_orders(self)Cancel related Purchase Orders and then cancel the FSO. -
action_cancel_fsm_only(self)Cancel the FSO and keep related Purchase Orders open.
New fields (4)
-
fsm_order_idMany2one → fsm.ordercomodel_name='fsm.order'readonly=Truerequired=Truestring='Field Service Order' -
new_person_idMany2one → fsm.personcomodel_name='fsm.person'required=Truestring='New Worker' -
purchase_order_idsMany2many → purchase.ordercomodel_name='purchase.order'compute='_compute_purchase_order_ids'readonly=Truestring='Purchase Orders' -
warning_messageTextcompute='_compute_warning_message'
-
action_confirm(self)Cancel the POs and proceed with worker reassignment.
New fields (1)
-
subcontract_product_idMany2one → product.productcomodel_name='product.product'domain=[('type', '=', 'service'), ('purchase_method', '=', 'receive')]help="Service product used on the Purchase Order line when an FSO of this type is subcontracted to an external worker. The product should have invoicing policy 'Based on Received Quantities' and supplierinfo configured for each vendor."string='Subcontracting Service Product'
No public methods.
New fields (2)
-
fsm_order_countIntegercompute='_compute_fsm_order_count'string='FSO Count' -
fsm_order_idMany2one → fsm.ordercomodel_name='fsm.order'copy=Falsehelp='The Field Service Order that generated this Purchase Order.'index=Trueondelete='set null'string='Field Service Order'
-
action_view_fsm_order(self)Smart button action to open the linked FSO.
New fields (1)
-
is_fsm_subcontractorBooleanstring='Is Subcontractor?'
No public methods.