Skip to main content

Warehousing Providers

::: Customize warehousing :::

WarehousingAdapter

You can define a custom Warehousing adapter to simulate the stock availability. In order to define a warehousing adapter you should implement the IWarehousingAdapter and register it to the global warehousing director that implements the IWarehousingDirector interface.

A store can have multiple Warehousing adapters configured and all of them are executed ordered by there orderIndex value. Warehousing adapters with lower orderIndex are executed first.

Below is a simple warehousing adapter implementation that will always show a stock is always available for all products.


import { WarehousingAdapter, WarehousingProviderType } from '@unchainedshop/core-warehousing';
import {
IWarehousingAdapter,
WarehousingError,
WarehousingAdapterActions,
WarehousingContext,
WarehousingProviderType,
} from '@unchainedshop/core-warehousing';
import { Context } from '@unchainedshop/api';

const Store: IWarehousingAdapter = {
key: 'shop.unchained.warehousing.store',
version: '1.0.0',
label: 'Store',
orderIndex: 0,
initialConfiguration = [{ key: 'name', value: 'Flagship Store' }],

typeSupported: (type: WarehousingProviderType): boolean => {
return type === WarehousingProviderType.PHYSICAL;
},

actions: (
config: WarehousingConfiguration,
context: WarehousingContext & Context,
): WarehousingAdapterActions => {
return {
isActive: async (): boolean => {
return true;
},

configurationError: async (): WarehousingError => {
return null;
},

stock: async (referenceDate: Date): Promise<number> => {
return 99999;
},

productionTime: async (quantityToProduce: number): Promise<number> => {
return 0;
},

commissioningTime: async (quantity: number): Promise<number> => {
return 0;
},
};
},
};


  • typeSupported(type: WarehousingProviderType): Defines the warehousing provider type an adapter is valid for.
  • isActive: Defines if the adapter is valid or not based any conditions you set.
  • configurationError(): WarehousingError: Any error that occurred during the initialization of an adapter. it can be a missing env or any value missing for a proper functioning of the adapter.
  • stock(referenceDate: Date): It should return the available stock of a product for the provided reference date. in the example above we are simply returning 99999 as stock count.
  • productionTime(quantityToProduct: number): Returns an estimate to produce number of product passed as an argument.
  • commissioningTime(quantity: number): number of days required to product a quantity passed as an argument

Register warehousing adapter

import { WarehousingDirector } from '@unchainedshop/core-warehousing';

WarehousingDirector.registerAdapter(Store);