Based on the provided info, the only thing I wonder about is the decision to have different product tables. I get the point but would offer that your products table could also be one that had a field to identify non stocked items. Where I worked, RM's were stocked items; DR were direct buys (in your case you might purchase a non stocked item and re-sell it); PH's were phantom parts (a unit made up of many other parts but not stocked per se) and maybe others that I don't recall. I'm not suggesting you would use any of these, just that such a field would allow you to easily filter from tblProducts as necessary. Then you don't have to repeat common fields such as QTY or UOM (unit of measure) and so on between tables. Normalization dictates that an entity should have one table, be that product you stock or otherwise, because it's all product.
The rest of it sounds OK as long as I understand what you wrote. There's plenty that you haven't asked about, such as whether or not you should store calculations such as total cost on a quote or invoice. That is usually ill advised.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.