I have more questions than suggestions here.
Why would you apply a payment to a Product Sales Quote?
What issues are solved by having separate Quotes, product and services tables?
I ask that last question, because if you can merge all three of these into a single table, using a "type" field to distinguish between types, recording payments becomes much easier.
With three separate tables here, I think you'll end up with three different portals--one for each to list all your "unpaid" records for payment assignment and any kind of summary report becomes very problematic to create.