Rational
There are some business (furniture business for example) that sell both services and goods to their customer. Customers are able to buy the furniture but also, if they need it, the assembly of the furniture they just bought.
It gets complicated when the company intends to use the shipment
invoice method. In this case tryton will generate a first invoice with the service line and then one or more invoice when the shipments are done.
Proposal
The proposal is to add a new module with a very simple model with a minimal workflow but with an optional reference field which allow it to be “plugged” to another document workflow. Also the invoice method on sale should be split between services and goods.
So if for example, we want to invoice the service once a shipment has been done, the service order is linked to the shipment and once the shipment is shipped the service order is triggered to be marked as done.
This would then be easy to customize to support plenty of different use cases.
The default could just manage the unlinked case with a simple button to mark the service order as done (and the quantity done).
Implementation
See Issue 9999: Add module to allow services to be invoiced when they are done - Tryton issue tracker