RE: Set duration to actual duration automatically when invoicing workorder
So what I remember is that when you mark a Bookable Resource Booking as Completed. It will create a Booking Journal which will show how many minutes/hours the resource was inprogress on the job. I think the only thing out of the box is the calculation of cost to yourself and not the customer. (I might be wrong as its been a while since ive looked at this)
I think what you could do instead is make your Service a total amount of 0.
Then with a plugin - when a booking journal record is created you then create a Work Order Service Record and add the time to it from the Work Order Journal. This then will calculate the price off the Work Order Service. You could call this Work Order Service 'Labour fee'?
Im just brainstorming. But checking out that Booking Journal and Booking Timestamp records might help you to figure a solution.