You should only need one quotes table. Since each vendor has their own account and password, you can use security settings to keep them from seeing any quote records that aren't identified with their account name.
You might also set up a layout that displays a project with a portal that lists quote records. If you set up the portal's relationship to match only quote records that are marked with the current record's ID and the the current user's account name, you'll have filtered all the other quotes out of the portal.
You shouldnt need six tables just auto enter the username in a created by field and then you should be able to use similar logic that restricts vendors to their own items for ingredients) through a relationship based on the UserName. If you capture the Unsername in a global field at login then you can link through it to filter out records you dont want them to see.
there may be a simpler way but this is what comes to mind at the moment.