Overview

This projects is a set of modules which lets you create a marketplace using Drupal Commerce.

Features

Stores: The module provides a new entity type for stores. Each user can have multiple stores and each store can have multiple members. Each product has an Store reference which determines which store owns that product. An entityreference Selection plugin is developed to restrict the store entityreference autocomplete results to the stores that the user is a member of.This feature is completed and working.

Store access control: There are 3 global store roles (non-member, member and store administrator). You can also create store-specific-roles yourself and assign permissions to each role (just like Drupal core permissions and roles). This feature is completed working.

Marketplace orders: A new order type which is used as the top-level orders and is used to handle customer carts. Customers only see this type of orders.

Store orders: A new order type which is used handle orders for each store. Each Store order has a reference to the original Marketplace order. Every time a product is added to a marketplace order, based on its Store reference, If there are no other products from the same store in the Marketplace order a new Store order gets created and the product also gets added to the new Store order, otherwise the product is added to an existing Store order which contains products from the same store. Each Store order is updated whenever something changes in the associated Marketplace order - All orders are synced at all times. Also, store members with sufficient permission, can edit the Store orders. This feature is completed and working.

Shipping fees: A new shipping method is developed which calculates shipping rates for each store and adds the sum of calculated shipping fees to the marketplace order. Currently, because of commerce_shipping's limitations, there are problems with calculating the shipping rates based on the store preferences using shipping methods like UPS. But the flat rate shipping method works just fine.

Payment to stores: A module for managing in-site funds is under development. The module provides funds_account and funds_transaction entities. Both stores and users can have funds accounts (in fact, any entity can have it's own funds account, you just need to implement hook_entity_info_alter() and define the new funds account bundle for the target entity type). Allows creating payment, deposit and transfer transactions. Withdraw functionality is not imeplemented yet, but I'm working on it. For more information see "To do" section below.

To do

These are major tasks that are left to do before releasing the first version of the module.

Develop a module for handling payments to Stores. #1979474: Handling store payments Commerce Marketplace MangoPay

Commerce Marketplace MangoPay Fork commerce_ups and make it work in the marketplace context.

commerce_marketplace_funds Views integration - DONE

If you need additional help, consulting, or need some custom marketplace functionality developed, feel free to contact me using the contact form on my profile page.

The 8.x-1.x version is a namespace migration from the commerce_multistore module. Read more: https://www.drupal.org/project/commerce/issues/2869505