How to use items representing services in BOM and subcontracting


I’m trying to include the cost of external assembly service in the BOM of a product item, so the BOM cost corresponds to the final cost of the product. Then I want to use the subcontracting workflow to produce the item. I’ve almost got what I want but I always get stuck at some point.

First of all, I can create an item representing the assembly service. In my opinion we don’t need to “maintain stock” of this item, but if I uncheck the “maintain stock” option I can’t give a valuation rate to the item. So, how can I take into account the cost of the service in the BOM? I have tried to give a buying price to the assembly service item, but when I include the item in a BOM I get a warning about “valuation rate not found” and the buying price is ignored.

So I decided to keep “maintain stock” option checked in the service item and give it a valuation rate. This way I can include the item in the BOM although I have to be careful of maintain the stocked quantity for the item always at zero. The next problem appears when I try to produce the item by subcontracting the assembly to an external company providing the raw material. It is obvious that the assembly service is not a raw material that should be tranferred to the supplier. After looking through the documentation I supposed I had to check the “Sourced by Supplier” option in the BOM for my service item. But surprisingly when this option is checked the valuation rate of the item is forced to zero in the BOM.

I don’t understand these kind of limitations. Maybe I missing something. I also tried to use operations in the BOM, but the implementation of operations seems confusing to me. It’s not possible to express the cost of an operation with a simple value, it’s needed to provide an operation time and the cost per hour, and what is worse, it’s not possible to change the cost of an operation after the BOM is submitted (no update cost option for operations).

Does anyone have an idea about how to do what I am trying to do? What the point of these restrictions is? Any help would be appreciatted.