Zach,
You're exactly right, this depends on how long the business generally takes to make the final product and how flexible you are with you customers. It's not particularly a database issue, apart from the question of when to make changes to the various tables.
In general, you could give the user 2 options on their order form.
1. Check availability (which when pressed will allow no 2.)
2. Confirm order.
Option 1 works out the total amounts of all materials required to complete the order. It then performs a read on the material stocks table to see if sufficemt material is availble. How a success / failure is handled depends on the way that you would normally do business.
Option 2 does exactly the same, except that
this time the stock table is actually updated to reflect the new quantities. It would also be good to have a store for your own use linking customers -> orders with a data field for order status (e.g order confirmed, in production, production finished, delivered, invoice issued, payment received etc) .
Hope that gives you some food for thought.
If it's more convenient, feel free to email me directly (justin@calax.com)
Cheers
Justin