Hi Bruce,
Could you please share the configuration of the product?
Go to the product -> Select the product -> Click on the Inventory Tab -> Check the routes.
Based on your explanation, it's highly likely you have the Replenish on Order (MTO), Buy routes on the product and have a vendor assigned on the purchase tab of the product.
When the client placed the SO for 9 units, the system triggered the MTO route and generated the RFQ to fulfil the SO.
Example recreated on the runbot:
1. Created a product called "Product MTO"
2. Updated the stock. (No pending orders. but you can have a PO confirmed and not yet received as well)

3. Configured the routes (Operations)

4. Placed a SO for 20 units. As you can see the system generated a purchase order.

5. This is the PO generated for the SO placed. As you can see, it was created for the 20 units. Without considering the stock on hand.

I hope this clarifies your query. I would suggest you use reordering rules to trigger the RFQs when the product reaches the minimum quantity.
Thanks.