-
Notifications
You must be signed in to change notification settings - Fork 248
Support of Store Pickup for Multi Source Inventory
Customer places an order and waits to receive a "Ready for pickup" e-mail. (This is a separate e-mail from the order confirmation.) Bring his ID, credit card, and order number to the store and pick up the ordered items.
At the time when the order is being placed on the "Shipping" step, we introduce an ability to choose "Store Pickup" out of allowed shipping methods.
We apply an assumption that each order should be fulfilled just from the only pickup location (which is considered as shipping address).
**Note: if some need to specify different pickup locations per cart item(-s), internally that could lead to functionality similar to Multi-Shipping (or integration with Multi-Shipping) when several orders created, for each corresponding pickup location.
In MVP functionality it's proposed to avoid integration with Multi-Shipping and provide an ability to choose a single Store Pickup location from Drop-Down box:
When Customer chooses pickup location Magento as before creates reservations for global stock (not to specific Source).
**Note: Maybe makes sense to add extension attribute to Order object and specify Source which should be used to fulfill the order OR we can detect the Source checking whether Shipping address matches the addresses of our Sources.
**Note: If there are not enough Qty on specified Source to fulfill the Order, an internal transportation from other sources should be made to the selected one. Say, our "Salable Quantity" on "Custom Stock" is 10 for SKU-1. "Custom Stock" consists of three sources:
- Source A, which contains 5 items of SKU-1
- Source B, which contains 4 items of SKU-1
- Source C, which contains 1 item of SKU-1
Altogether it gives us 5 + 4 + 1 = 10 If Customer has ordered 8 items of SKU-1 and chosen "Source A" for Store Pickup:
- the system will create Reservation for -8 for SKU-1 on "Custom Stock" (not Source A)
- merchant has to move 3 items of SKU-1 from Source B -> Source A to fulfill the order
- when required 3 items are moved to Source A (so, the order is fulfillable) merchant initiate delivery of "Ready for pickup" e-mail, which notifies Customer that he can come to the store to grab all ordered items.
A merchant should have the ability to specify that Source is able to be used for Store Pickup. To do so we have to introduce corresponding Extension Attribute for Source entity and provide an ability to specify one via both Admin UI on the Source editing page and Web APIs. Based on the attribute value (whether it set) we will add the corresponding Source to the Store Pickup Drop-Down list.
For orders placed with Store Pickup shipping method, we have to skip the Source Selection Algorithm step, as this information known in advance. But merchant has to be informed that there is not enough Qty to fulfill the order and internal shipping should be done to fulfill one, in the case when selected source does not allocate all requested product Qty.
Multi-Source Inventory developed by Magento 2 Community
- Technical Vision. Catalog Inventory
- Installation Guide
- List of Inventory APIs and their legacy analogs
- MSI Roadmap
- Known Issues in Order Lifecycle
- MSI User Guide
- 2.3 LIVE User Guide
- MSI Release Notes and Installation
- Overview
- Get Started with MSI
- MSI features and processes
- Global and Product Settings
- Configure Source Selection Algorithm
- Create Sources
- Create Stock
- Assign Inventory and Product Notifications
- Configure MSI backorders
- MSI Import and Export Product Data
- Mass Action Tool
- Shipment and Order Management
- CLI reference
- Reports and MSI
- MSI FAQs
- DevDocs Documentation
- Manage Inventory Management Modules (install/upgrade info)
- Inventory Management
- Reservations
- Inventory CLI reference
- Inventory API reference
- Inventory In-Store Pickup API reference
- Order Processing with Inventory Management
- Managing sources
- Managing stocks
- Link and unlink stocks and sources
- Manage source items
- Perform bulk actions
- Manage Low-Quantity Notifications
- Check salable quantities
- Manage source selection algorithms
- User Stories
- Support of Store Pickup for MSI
- Product list assignment per Source
- Source assignment per Product
- Stocks to Sales Channel Mapping
- Adapt Product Import/Export to support multi Sourcing
- Introduce SourceCode attribute for Source and SourceItem entities
- Assign Source Selector for Processing of Returns Credit Memo
- User Scenarios:
- Technical Designs:
- Module Structure in MSI
- When should an interface go into the Model directory and when should it go in the Api directory?
- Source and Stock Item configuration Design and DB structure
- Stock and Source Configuration design
- Open Technical Questions
- Inconsistent saving of Stock Data
- Source API
- Source WebAPI
- Sources to Sales Channels mapping
- Service Contracts MSI
- Salable Quantity Calculation and Mechanism of Reservations
- StockItem indexation
- Web API and How To cover them with Functional Testing
- Source Selection Algorithms
- Validation of Domain Entities
- PHP 7 Syntax usage for Magento contribution
- The first step towards pre generated IDs. And how this will improve your Integration tests
- The Concept of Default Source and Domain Driven Design
- Extension Point of Product Import/Export
- Source Selection Algorithm
- SourceItem Entity Extension
- Design Document for changing SerializerInterface
- Stock Management for Order Cancelation
- Admin UI
- MFTF Extension Tests
- Weekly MSI Demos
- Tutorials