Get shipping weight before confirming sale

I often find myself having to calculate the weight of many items manually in order to calculate/get carrier quotation for the shipment.
Then I use this information to set the shipping price of the order, in order to have the invoice with the right shipping cost.

You say: confirm the order, set invoice method to manual, update the shipping cost on the shipment, and then make the invoice manually. The issue here is that I need to have the invoice prepared to give to the driver and it is not practical to prepare the documents just in time: it is better to have the prepared before the driver arrives.

From what I can tell, I can set Shipment cost method: on sale, or on shipment.
I can not set the shipping cost on sale, as I do not know it before calculating the weight and getting the carrier offer.
And I can not use on shipment sent, as I would have to generate the invoice while I am loading the lorry, or make the driver wait.
Also I do not like the idea of “Ship” before actually shipping.

I imagine there are two options: Create the shipment before the sale is confirmed, or have a method to get the shipping weight without creating the shipment.

Also I do not like the idea of using sale_amendment to modify the shipping cost after the sale is confirmed.

Any ideas how to make this less painful?

Ideally you should be able to make Tryton compute the shipping cost with Carrier Weight Module — Tryton module to add cost method "on weight" on carrier .