Click & Collect domains

Edit on GitHub

Click and Collect business models refers to a retail strategy where customers make purchases online and then collect their ordered products from a physical store or a designated pickup location. This model combines the convenience of online shopping with the immediacy of in-store pickup.

To implement this functionality effectively, retailers create product offers in service points, ensuring that the inventory reflects available products accurately and that items are ready for customers to pick them up. Furthermore, shipment types need to be configured to manage and streamline both delivery and pickup options. Delivery refers to orders sent directly to the customer’s address, while pickup refers to the collection of products by the customers at the service points.

Service points

  • A service point is a physical location where services are provided. Depending on the services provided, there can be different kinds of service points, like a warehouse or a physical store. The definition of a service point ultimately depends on the services it provides.

  • A Service point address is the address of a location where customers can pick up their orders. For example, if a customer selects a locker as a service point to pick up their order, they will be given the address of a specific locker location to pick up their order from.

  • A service type is a classification of services that a business offers to its customers. Service types are determined by the nature of the business. Service type examples:

    • Pickup service
    • Return service
    • Rental service
    • Repair service
  • A service represents a specific service type that is provided at a specific service point. For example, a pickup service at a retail location located at Julie-Wolfthorn-Straße 1, 10115, Berlin.

Shipment type

A shipment type is a way in which a customer receives an order after placing it. Shipment type examples:

  • Home delivery: products are delivered to the customer’s residence.
  • In-store pickup: customer places an order online and picks it up at a selected physical store.
  • Curbside pickup: customer places an order online and drives the the selected physical store. They park at a designated area, and the store’s associate brings out the order directly to the car.
  • Locker pickup: customer places an order online and picks it up from a selected secure locker using a key or code provided by the store.

Domain model

C&C Domain model
SP2
Service Point
Service Point Address
Store
SP3
Service
e.g. C&C
SP1
ShT3
Shipment Type
PO1
Product Offer
- Product
- Price
- Availability
Shipping Method
ShT1
Product
Product Price
Merchant
Product Offer
Stock
Stock
(Warehouse)
ShT2
PO2
Product Stock
Service point
ShT3
Service Type
e.g. C&C
ST1
Existing entities and relations
Keys
New entities and relations

Sales Order
Sales Order Item
SP4
Exisintg entities and relations
Sales Shipment

The entities and their relationships as they appear in the diagram:

ENTITY RELATIONSHIP RELATIONSHIP TYPE
Store Relates to Service Point many-to-many
Store Relates to Shipment Type many-to-many
Merchant Relates to Product Offer one-to-many
Service point Has a Service Point Address 1-to-1
Service point Relates to Sales Order through Sales Order Item one-to-many
Service point Has a Service one-to-many
Service point Has a Store many-to-many
Service Has a Service Type many-to-one
Service Relates to Product Offer many-to-many
Service type Relates to a Service one-to-many
Service type Relates to Shipment Type one-to-many
Shipment Relates to Shipping Method one-to-many
Shipment Relates to Product Offer many-to-many
Shipment Relates to Sales Shipment one-to-many
Shipment Has a Store many-to-many
Product offer Relates to Product many-to-one
Product offer Relates to Stock (Warehouse) many-to-one
Product Relates to Product Price one-to-many
Product Relates to Product Stock one-to-many
Product Has a Product Offer one-to-many
Sales order Has Sales Order Item one-to-many
Sales order Relates to Sales Shipment one-to-many
Sales order item Has a Sales Shipment many-to-one
Stock (warehouse) Has Product Offer Stock one-to-many
Stock (warehouse) Has Product Stock one-to-many
Show allHide

The relationships indicate how entities interact with each other. For example, a Store can have multiple Service Points, a Merchant can offer various Product Offers, and each Product Offer can be linked to multiple Products.

To show the introduced changes and extensions, new entities and relations are painted in green, and existing ones are painted in white.

Entity-relationship diagram

The entity-relationship diagram shows how domain entities are mapped to database tables.

spy_service_point
+ id_service_point
+ uuid
+ name
+ key
+ is_active
spy_store
id_store
spy_service_point_store
+ id_service_point_store
+ fk_service_point
+ fk_store
spy_service_point_address
+ id_service_point_address
+ uuid
+ address1
+ address2
+ address3
+ zip_code
+ city
+ fk_service_point
+ fk_country
+ fk_region
spy_country
id_country
spy_region
+ uuid
id_region
spy_service
+ id_service
+ uuid
+ is_active
+ key
+ fk_service_point
+ fk_service_type
spy_service_type
+ id_service_type
+ uuid
+ key
+ name
spy_service_point_search
id_service_point_search

fk_service_point

store

data

key

structured_data

created_at

updated_at
spy_product_offer
id_product_offer

product_offer_reference
spy_product_offer_shipment_type
+ id_product_offer_shipment_type
fk_product_offer
fk_shipment_type
spy_service_point_storage

+ id_service_point_storage
+ fk_service_point
+ data
+ store
+ key
+ created_at
+ updated_at

spy_product_offer_shipment_type_storage

+ id_service_point_storage
+ product_offer_reference
+ data
+ key
+ store

+ created_at
+ updated_at

spy_shipment_type_storage

+ id_shipment_type_storage
+ fk_shipment_type
+ data
+ key
+ store

+ created_at
+ updated_at

spy_service_product_offer
id_service_product_offer
fk_service
fk_product_offer
spy_shipment_method
+ fk_shipment_type
spy_shipment_type_store
+ id_shipment_type_store
+ fk_shipment_type
+ fk_store
spy_shipment_type
+ id_shipment_type
+ name
+ is_active
+ key
+ uuid
spy_shipment_type_service_type
+ id_shipment_type_service_type
+ shipment_type_uuid
+ service_type_uuid
spy_sales_order
id_sales_order

spy_sales_order_item
id_sales_order_item

fk_sales_order
spy_sales_shipment_type
id_sales_shipment_type
key
name
spy_sales_shipment
id_sales_shipment
fk_sales_shipment_type
spy_sales_order_item_service_point
id_sales_order_item_service_point
fk_sales_order_item
key
name
created_at
updated_at

Domains and subdomains