Sale Invoice and shipping method on staged

Rational

Sale has Invoice method, and shipment method: Manual, order, shipment sent.

It is not good make a final goods invoice for goods that are not yet manufactured, or procured.
Also for shipping, it is confusing to have a shipment that is not yet manufactured, and you are wondering where the goods are. Rather than create another state for shipping “Staging”, I think it is better to create the shipment after the products have been produced.

Also having many invoices and shipments that you can not act on is annoying and confusing, so I think we either need to find a way to hide them (a new state), or to generate them when they can be acted upon: when the staging is complete.

Proposal

I propose to add a new Invoice and Shipment method: On staged

Implementation

The creation of the shipment is what trigger the production. The state can stay in waiting and it will be assigned once there are goods.
Otherwise you may want to use Sale Supply Module — Tryton module for sale supply in order to create production order before the shipment.

For the invoice, it is up to you to decide when it should be created with the method. And you can even manually decide when to create it. So for me there is no need for a new state.