I want to create a shopping cart system that has "packaged" products. The best examples of a use case would be a customizable basket like a fruit/gift basket or a pizza with custom toppings.
My product catalog has a selection of fruit, gifts, basket-type and gift-wrap. The workflow for a gift basket would be something like:
* Select fruit/gifts from a complete list, perhaps with checkboxes
* Select basket type - plastic, wicker, cardboard, etc. The basket itself would be a separate product with different options, each option with a different price
* Select wrapping
* Repeat for the number of custom gift-baskets
* Checkout
* Customer gets email with details on each basket and constituent products (fruit/gifts + basket type + wrapping option).
I feel that CCK would be able to do this. A ProductPackage CCK node would have the following relationships:
* ProductPackage has-many Products tagged as (i.e., in category) Fruit or Gift
* ProductPackage has-one Product tagged as Basket
* ProductPackage has-one Product tagged as Wrapping
The cart eventually will have multiple ProductPackage nodes, each of which has multiple products.
The problem I have is how to add this CCK node into a cart, and ensure that the price of the custom ProductPackage is a combination of its components. I'll basically be making the ProductPackage into a meta-product.
Before I delve into creating a new module to do this I was hoping to exhaust existing solutions so I'm not re-inventing an existing feature. Also, I wonder if there is a better or more recommended approach than using CCK.

I had seen uc_node_checkout but it is rather limited since it only allows one product tied to the node.