Multi-site Aware

Ubercore should not hinder multi-site e-commerce applications. It's a fairly common task to centralize orders collected through multiple store fronts in a single database for administration and fulfillment. This is tricky at best right now, although I'm not entirely sure that's Ubercart's fault. However, moving forward, we should give explicit attention to this so the resultant code is much more attractive to larger e-commerce sites.

We need to think through issues regarding access control, shared user and product data, branding at every point in the customer experience (i.e. the invoice should match the site's theme you purchased from), and stock control.

Additionally, we might consider the need of large e-commerce sites to ship products from multiple warehouses... but that's not necessarily the multi-site awareness I'm thinking of in this thread.

Thoughts? Anyone with experience to point out our current limitations?

Comments

Service Layer

I think if we could have a clean seperation between api and ui, the multi-site awareness/integration would be as simple as wrapping method calls with something like services !

One problem that you're going

One problem that you're going to run into with that is with dealing with SSL Certs. Many smaller shops have one IP to work with. Although, that isn't necessarily a drupal/commerce problem, it's something to keep in mind. Expect a lot of requests of "why is my site throwing an error at me when I try to go to a secure page?" Just a thought.

tied order to store

I have an order system that I built with Drupal 5. It's more like a POS system where authorized user (drupal users with permission) can add customers and then create order for each customer. Orders consist of Items that has price. Customer, Order and Item all separate entity (not using the node system).

Recently we need to expand the system so that it can be used in multiple stores. So what I'm doing now (still developing) is create another entity called Store. All Drupal users will have one or more Store attached to them. Upon logged in, I check the stores associated to that users. If more than one store attached, they'll be presented with an option to select the active store for that session. If there's only one store attached to them, that store automatically set as active store for them in that session.

Order now would be associated with a store using additional column store_id so when user creating an order for customer, the order will be tied up to their active store in the session. Customer also get assigned a store_id because customer can purchase the item through any stores but their information always belonged to the store they registered to. The rules is to allow other store to look into customer's info but never edit it if they're not belong to their store.

For single store use case, we can automatically create a default store so for users that don't need multi store functionality they don't need to bother about that.