Part of the problem (as I understand it, and sorry if I misinterpreted) is that the Quantity Contract is related to the Customer first. Therefore, if you want referential integrity between tblPurchaseOrder and tblQuantityContract, you have to either have a nullable foreign key into tblPurchaseOrder from tblQuantityContract, or you have to have a child table to resolve between tblPurchaseOrder and tblQuantityContract.
If you have the nullable foreign key, then each PurchaseOrder can be related to only one QuantityContract. That automatically limits the PurchaseOrder to a single product at a time (not very flexible). If you go further and have the foreign key to the PurchaseOrderLineItem (assuming you have one) that gives you a better fit but you have to programmatically ensure how much of the QuantityContract is satisfied by a specific PurchaseOrderLineItem. Still not ideal.
I suggest you go with a child table to resolve between PurchaseOrderLineItem and QuantityContract. QuantityContract has a non-identifying relationship to Customer. It doesn't require you to maintain a column in the PurchaseOrder (or -LineItem) for Customers that don't use QuantityContracts, and lets you test for existence rather than have to do a bunch of null-testing for every PurchaseOrder.
Hope this helps some! Good luck!