Fonctionnalité
Les buffers servent à protéger un certain nombre d'unites de stock. Le cas le plus commun d'utilisation est de protéger quelques unités (2-3) du stock sur le stock vendable global, pour ainsi mitiger la désynchronisation entre les ventes en magasin et les ventes en ligne.
Buffer groups
Tous buffer à un buffer_group
au quel il appartient et que permet lui faire référence depuis une requete de stock.
{ "aggregates": { "0": { "deduction": { "endpoint_buffer": [ "FR", "IT" ], "global_buffer": [ "stores_FR" ] } } } }
Types de Buffers
Ils existe deux types de buffers, le buffers endpoint et le buffers global. Le premier seront assigne et déduit a niveau endpoint, le deuxieme seront assigne sans un notion d'endpoint et seront déduit un fois l'endpoints ont été agrégé. Comme resultat, le buffers global sont prise en compte seulement dans le requete de stock avec d'unification par endpoint.
Buffer endpoint
Buffer en dur
Les plus simple de buffers, correponde a une nombre de unites bufférisés pour un couple item_id
, endpoint_id.
endpoint_id | item_id | qty | buffer_group |
---|---|---|---|
store_1 | i1 | 2 | FR |
store_1 | i1 | 3 | US |
Buffer endpoint
Tres similar au buffers en dur, mais plus flexibles. Ils permettent de indiquer des filtres pour prendre en compte de manier dynamique des endpoints et items.
endpoint_id | item_id | qty | buffer_group |
---|---|---|---|
endpoint_type = store AND address.region.country.code = FR | * | 9 | FR |
endpoint_type = warehouse | * | 12 | WORLD |
Buffer Global
Permet affecter un buffer de manier global, donc sans renseigner de filtrage sur les endpoints affecté. Permet buffériser une nombre de unites a niveau global.
item_id | qty | buffer_group |
---|---|---|
category = "bebe" | 9 | FR |
* | 12 | WORLD |
Structure d'un buffer
Signature API
Routes BIP - Buffer Inventory Processor
- item_filter: Si nil, s'applique à tous les items
- id (string) : item_id sur le quel le buffer serai appliqué (buffer en dur)
- request_name (string) : Permet appliquer le buffer a un request de items (tous les items avec un certain catégorie). Doit être vide si id est set
- endpoint_filter: Si nil, s'applique à tous les endpoints
- id (string) : endpoint_id sur le quel le buffer serai appliqué (buffer en dur)
- request_name (string) : Permet appliquer le buffer a un request de endpoints (tous endpoints du type store). Doit être vide si id est set
- stock_type (string) : required type de stock sur lequel le buffer est appliqué.
- global (bool) : true dans le cas d'un buffer global, false sinon.
- buffer_group (string) : required buffer group au quel appartient le buffer, permet lui fair référence dans une requete de stock..
- qty (int) : required nombre de unites bufférisés.
Impact des buffers sur le calcul de stock
Prise en compte dans le requêtes de stock
Les buffers globals/endpoints que sont appliques dépende de la configuration des requêtes de stock. Dans la requete de stock on liste les buffers groups - les groups dans lesquels les buffers sont reparties - que doive être prise en compte. S'il y a 3 buffers globales configures pour une même clé de stock, et le but se d'appliquer arbitrairement 1 de ces 3. Il suffit de les repartir dans 3 buffers groups différents, et d'indiquer QUE 1 seul dans la requête de stock.
Calcul
Quand les buffers sont prise en compte dans un requete de stock, le calcul de stock disponible ce fait comme suit :
Sans unification endpoint
Detaille
Avec unification endpoint
Unifie
MIN( SUM (MAX( RawStock - ResEndpoint - Dispositions - MAX ( BufDur, BufEndpoint ) , 0 ) ) , SUM (RawStock - ResEndpoint - Dispositions ) - BufGlob)