There has been many requests for marketplace type features. People have requested features such as multiple seller management. I had need for the same and have developed a working group of modules under the working title of Ubercart Marketplace.
Overview of the Five Current Ubercart Marketplace Modules:
- mp_products:
- Adds "selling" tab to user accounts with certain permissions.
- Adds a table of products created by seller.
- Includes sample concept of edits to product node edit form appropriate for a marketplace seller. For example, it removes form elements sellers may find unnecessary and cryptic.
- This module also sets up the "cost" price field to be used as the commission field and is calculated based on a set commission rate. These options are configurable under "Seller settings" in Ubercart configuration.
- mp_orders:
- Adds "fulfill orders" tab to "selling" section of user accounts.
- Adds a table of orders containing products created by seller. This module handles "dividing" up orders at checkout, so each seller only can fulfill and view the portion of a customer's order that contains the seller's products.
- Handles seller order statuses, moving their "portion" of the order to complete when order is fulfilled.
- Automatically completes orders when orders are nonshippable.
- mp_shipping:
- Mimics functionality of uc_shipping, but allows sellers to only fulfill and ship the portion of a customer's order containing the seller's goods.
- Adds in a packing slip feature that allows sellers to print a packing slip containing only the content of the specified package. This is for drop shipping support.
- Adds a workflow-ng configuration that moves the whole customer order to completed when all sellers' order statuses for an order are complete.
- This module currently only supports the "manual shipping" option (e.g. live quotes from ups and usps are not yet supported). However, this works well with the contributed order tracking module because sellers can select a carrier and tracking number for their packages that can then be tracked by the customer.
- mp_reports:
- Adds reports to sellers' pages under their account. Seller reports included are: product sales, sales summary, and sales per year/month.
- Seller reports only show the seller's products and sales and the commission they will be paid.
- Seller reports only report sales that are from orders that the seller has completed. The seller will not get paid until they either ship the order, or the order is all nonshippable, in which case it will automatically be promoted to complete.
- mp_reports adds two admin reports to the current uc_reports module. The first one is a seller order statuses report that lists the orders by seller that have not been completed so the store administrator can look out for slow sellers. The second lists the commission that the sellers should be paid. This is calculated from the "cost" price field mentioned above. This table is powerful in that it allows you to select the date range in which to show orders so you can pay sellers in whatever periods you wish. This report also supports exporting to a Paypal Mass Payments formatted txt file. Currently this is the envisioned method of seller payment.
- mp_notify:
- This simple module allows sellers to be notified when they have an order.
- Options for this module are configurable under "seller" tab of notification settings area in Ubercart configuration.
Concept:
Basically, this group of modules leverages current Ubercart core functionality, while limiting access so sellers can only deal with their orders and products. All seller functions are under a new "selling" tab of their user account page (user/x/selling). Seller order statuses have been created to allow management of payment--the idea is that only sellers' orders which are complete will show up in seller payment reports. This forces sellers to fulfill their orders if they want to be paid. Nonshippable orders are automatically promoted. The commission to be paid to the sellers is based on the preexisting "cost" field of the product node. This is the actual value a seller will be paid. The only method currently supported (aside from manual) to pay sellers is with the created Paypal Mass Payments file.
Usage Ideas:
Ubercart marketplace would work well with moderation modules (look on drupal.org), so sellers can not directly list products. A set of profile modules and a taxonomy setup may also be appropriate to allow sellers their own "about me" page and a view of all products by a certain seller. See how to setup roles/permissions under "Installation."
Wishlist:
Some of these features may be coming in the future. Feature requests are welcome, also.
- "Glue" module for handling seller taxonomy and seller profiles. Think similar features to uc_manufacturers.
- Better support for shipping fulfillment. Allow sellers to create their own accounts with shipping companies, so printing shipping labels (etc) is possible for each seller.
- Quick menu for seller functions
- Report graphs
Handle file downloads (feature for products) more intuitively due to lack of nonadmin support for product features- Added in BETA1!Support for more seller payment methods, such as pay with check. Also allow sellers to choose method and/or select email address of their Paypal account.- Added in BETA2!
Installation:
See the README included in the attached .zip for additional details. Requires a small uc_shipping patch as well as a template file to be moved to the uc_orders template folder (included). To realize functionality, create a new role (and some users) and give this "seller" role the access permissions of the ubercart marketplace modules (view own reports, ship own products, etc.). Also give "seller" other permissions appropriate (such as edit own products, create products, etc. from Ubercart core).
IMPORTANT Notes:
It is important to keep in mind that this is a developer preview. Consider this BETA at best. Many Ubercart core module functions had to be ruthlessly overridden due to lack of fine-grained access control in Ubercart. I tried to alter (with hooks) what I could and the rest had to be overridden. Some of my database queries also got messy due to pulling information from many tables not set up for fine-grained seller access. If you can find a simpler way to do certain functions of Ubercart Marketplace, please help support it. I also have not gotten around to doing my own cleaning and full commenting of the code. Updates will be posted here when available. I tested these extensively, but there may still be plenty of bugs. I encourage all support, feature requests (although I am limited in time), and ideas. Also note, these modules may not satisfy everyone. I tried to make them suitable for a range of purposes, but they may not fit everyone's specific needs. Once this group of modules gets a little more underway, I will set up the appropriate projects and issue queues. Post with your thoughts.
Edit: To download, please check out the project page at drupal.org: http://drupal.org/project/ubercart_marketplace
Edit 2: Documentation: http://drupal.org/node/326102


I'm highly impressed and wish you the best of luck on this project. Lots of folks have asked about just this sort of functionality, and it sounds like you've done quite a comprehensive job. I would encourage you to make a separate post that catalogs as much of the shortcomings in the core access control as possible so we can improve this in D6 and beyond. That would rock!

A project the size will quickly become unwieldy in a single forum thread. You can also make a contrib page here that links directly to your project page on Drupal.org so folks can find the project easier.




Joined: 03/05/2008