Marketplace Product Offer feature: Domain model and relationships

Edit on GitHub

The Marketplace Product Offer entity is created when multiple merchants sell the same product on the Marketplace. The product offer is a variation of a concrete product with its own specific price (and volume price) and stock. It can be “owned” by any entity, however, in a B2C or B2B Marketplace, it is owned by a merchant.

The Marketplace product offer has its own validity dates and its own availability calculation based on its reservations.

The product offer re-uses and extends concrete product features. All product-related data is stored and processed as concrete products. All offer-related data is stored in a separate entity and linked to a concrete product.

The Marketplace Product Offer feature contains both merchant product offer and product offer concepts. Merchant product offer extends product offer by adding a pointer to a merchant.

Module dependency graph

The following diagram illustrates the dependencies between the modules for the Marketplace Product Offer feature.

Module Dependency Graph

The following table lists the main modules of the Marketplace Product Offer feature.

MerchantProductOffer Provides a collection of product offers by request. Extends ProductOffer with the merchant information. Used by MerchantSwitcher for enabling the merchant functionality.
MerchantProductOfferDataImport Module for importing Merchant offers from the CSV file.
MerchantProductOfferGui Provides Zed UI interface for merchant product offer management.
MerchantProductOfferSearch Manages Elasticsearch documents for merchant product offer entities.
MerchantProductOfferStorage Manages storage for merchant product offers.
MerchantProductOfferStorageExtension Provides an interfaces of plugins to extend MerchantProductOfferStorage module from the other modules.
MerchantProductOffersRestApi Provides Glue API endpoints to manage merchant product offers.
Product Provides base infrastructure and CRUD operations to handle abstract product and concrete products.
ProductOffer Provides the main create-read-update product offer functionality.
ProductOfferExtension Provides extension interfaces for ProductOffer module.
ProductOfferGui ProductOfferGui is the Zed Administrative Interface component for managing product offers.
ProductOfferGuiExtension Provides plugin interfaces for ProductOfferGui module functionality extending.
ProductOfferStorage Manages storage for product offers.
ProductOfferStorageExtension Provides interfaces for extension of ProductOfferStorage module with plugins.
ProductOffersRestApi Provides availability to add product offer resource relation.
ProductOfferValidity Defines validity period for an offer.
ProductOfferValidityDataImport Data importer for ProductOfferValidity.
ProductOfferValidityGui ProductOfferValidityGui is the Zed Administrative Interface component for managing product offer validity.
MerchantProductOfferWidget Provides merchant product offer information for the spryker-shop.
MerchantProductOfferWidgetExtension This module provides plugin interfaces to extend the MerchantProductOfferWidget module from the other modules.
ProductOfferWidget Provides widgets for displaying Product Offers.

Domain model

The following schema illustrates the domain model of the Marketplace Product Offer feature:

Domain model