Correct way to create Departments/Categories cck selectors in Drupal 7? 1. My Scenario:

I'm building a shopping cart and using Ubercart+Drupal 7 for it.

Manufacturers will be able to log in and create their own products with 


Product attributes {Name, SKU, price etc} 
Department + Category - can be multiple
a brand


A product can exist in multiple Department/Categories too.

Sample screenshot:
http://picpaste.com/pics/menu.1375842751.png
(wanted to post here but low reputation, can an admin post it here pls?)

2. Elaboration of the situation

I'm having trouble figuring out the most correct, stable and fastest way to set up Department/Categories with the following goals and criteria:

2i. Product - CCK fields for adding Department, Categories to product:


Select a department, and it's associated category (Dep+Cat)
There are going to be about 12 Deps, 15 Cats each = 180 categories. I do not want to list this as an entire taxonomy dropdown - confusing and ugly. My thought right now is to have two multi-select boxes side by side - "Department" with 12 items &amp; "Category". To illustrate, here's a simple wireframe: http://picpaste.com/Add_dept_cat.png
As per the wireframe, manufacturers can list the product in multiple related departments and categories. 


2ii. Add / Create + Add brand to product
 - Add an existing brand to the product
 - If brand doesn't exist, add a new brand and add it to the product
 - Brands are attached to the manufacturers who created them

2iii. I'm searching and finding modules such as taxonomy_menu, taxonomy_hierarchy and content_taxonomy. However a lot of them look like they are not stable or supported for Drupal 7. Even if they are ok, I'm not sure if I'm heading in the right direction by using these modules.

2iv. Shoppers (Authenticated users) should be able to see the main menu on top which actually lists the departments available. On hovering, a particular department's categories &amp; brands within are shown. They can click a department from the menu or drill down to category or brand. On selecting one of these three, the product listing comes up -- if department, shows department items, allowing filtering by brand/category -- if category selected, e.g "moisturisers", shows all items and allows filtering by brand --- if brand selected, shows all items for that brand in this department / category, allows you to move up and see all items for the brand in this department, and in other departments..

3. Question

Having said all that, my question is more to do with the CCK input fields of department, categories &amp; brands and the underlying taxonomy / menu structures and modules. For 2iii, any tips are welcome, but I'm not at that stage yet anyways so I'm not looking at that yet.

I'm having trouble with 


how I should structure my data in taxonomies or other structures (menus?)
how to create the cck fields for the manufacturer to add multiple department / categories to his product
how he can add a brand to his product or create and add a new brand to his product


Ideally I want to achieve the above with modules in the most Drupal-correct, stable and fastest way possible, without having to write any code.

Thanks

Edit: one more question. If user adds multiple "Department-category" to a product, how to allow one of it to be the "main"?
Your concern is true. Anyone that tried to build an eshop with multiple categories had the same question in the beggining.


  1) how I should structure my data in taxonomies or other structures (menus?)


You can create a large taxonomy tree the way I see it on the screenshot. Use taxonomy_manager for better UI. Also to display the taxonomy trees as mega menus you can search for "mega menu" in the drupalmodules.com you will find many such modules.


  2) how to create the cck fields for the manufacturer to add multiple department / categories to his product


You can use the Hierarchical_select module. It is a must for such functionality.


  3) how he can add a brand to his product or create and add a new brand to his product


Create a new Vocabulary for Brands and add a field with autocomplete. You can use Hierarchical Select also. It has an option (with proper permissions) to add a term if it does not exist.