Module de fourniture d'articles annexes
Module de fourniture d'articles annexes
Un module de fourniture d’articles annexes permet à StockTicket de proposer, pré-réserver et réserver des articles complémentaires pendant la constitution d’un panier.
Il est possible de développer son propre module compatible avec StockTicket, puis de le déclarer dans l’environnement StockTicket en tant que module de type AncillaryItemsProvider.
Le module doit implémenter et exposer les 3 méthodes suivantes :
-
GetAncillaries(GetAncillariesRequestModel request, CancellationToken cancellationToken)retourne unGetAncillariesResponseModel
Cette méthode est appelée par StockTicket pour obtenir les propositions d’articles annexes en fonction du contexte courant (panier, catalogue, représentation). -
SetAncillariesSelection(SetAncillariesSelectionRequestModel request, CancellationToken cancellationToken)retourne unSetAncillariesSelectionResponseModel
Cette méthode est appelée par StockTicket lorsqu’un utilisateur sélectionne ou désélectionne un article annexe dans le panier.
Elle permet au module de gérer la pré-réservation ou la libération de l’article annexe côté fournisseur. -
BookAncillaries(BookAncillariesRequestModel request, CancellationToken cancellationToken)retourne unBookAncillariesResponseModelCette méthode est appelée par StockTicket lors de la validation finale du panier pour confirmer définitivement les réservations côté fournisseur.
StockTicket utilise ces méthodes lorsqu’un module de vente est configuré pour utiliser un ou plusieurs fournisseurs d’articles annexes.
Principe d’appel des méthodes
Lorsqu’une opération de panier ou de catalogue nécessite des propositions d’articles annexes, StockTicket interroge les modules de type AncillaryItemsProvider associés au module de vente courant.
sequenceDiagram
Application cliente-->>API StockTicket: Appel API panier / catalogue
API StockTicket-->>Module de vente: Résolution du contexte courant
API StockTicket-->>Module AncillaryItemsProvider: GetAncillaries(...)
Module AncillaryItemsProvider-->>API StockTicket: GetAncillariesResponseModel
API StockTicket-->>Application cliente: Panier + ancillaries
Lorsqu’un utilisateur sélectionne un article annexe, StockTicket appelle SetAncillariesSelection(...) afin d’informer le module fournisseur de la sélection ou de la désélection.
sequenceDiagram
Application cliente-->>API StockTicket: Sélection d'un article annexe
API StockTicket-->>Module AncillaryItemsProvider: SetAncillariesSelection(...)
Module AncillaryItemsProvider-->>API StockTicket: SetAncillariesSelectionResponseModel
API StockTicket-->>Application cliente: Panier mis à jour
Lors de la validation finale du panier, StockTicket appelle BookAncillaries(...) pour confirmer définitivement les réservations côté fournisseur.
sequenceDiagram
Application cliente-->>API StockTicket: Validation du panier
API StockTicket-->>Module AncillaryItemsProvider: BookAncillaries(...)
Module AncillaryItemsProvider-->>API StockTicket: BookAncillariesResponseModel
API StockTicket-->>Application cliente: Confirmation
Contrat de façade à implémenter
GetAncillaries(GetAncillariesRequestModel, CancellationToken)
Cette méthode retourne les ancillaires proposés en fonction du contexte courant.
GetAncillariesRequestModel
-
ModuleDefinitionId (
string)
Identifiant de la définition du module cible. -
ModuleInstanceId (
string)
Identifiant de l’instance du module cible. -
EventDateId (
string?)
Identifiant d’une représentation si la demande porte sur une représentation spécifique. -
BasketDetail (
BasketDetailModel?)
Détail du panier courant.
GetAncillariesResponseModel
- AncillariesSuggestions (
List<AncillarySupplierInfosModel>)
Liste des suggestions retournées par le module.
AncillarySupplierInfosModel contient :
-
ModuleDefinitionIdSupplier (
string)
Identifiant de la définition du fournisseur. -
ModuleInstanceIdSupplier (
string)
Identifiant de l’instance du fournisseur. -
AncillaryItems (
List<AncillaryItemModel>)
Liste des articles annexes proposés.
SetAncillariesSelection(SetAncillariesSelectionRequestModel, CancellationToken)
Cette méthode informe le module d’une modification de sélection d’article annexe.
Elle peut correspondre à : - un ajout, - une modification de quantité, - une suppression, - ou une libération de pré-réservation.
SetAncillariesSelectionRequestModel
-
ModuleDefinitionId (
string)
Identifiant de la définition du module cible. -
ModuleInstanceId (
string)
Identifiant de l’instance du module cible. -
BasketId (
string)
Identifiant du panier concerné. -
AncillaryItemId (
string)
Identifiant StockTicket de l’article annexe. -
ExternalItemId (
string?)
Identifiant externe côté fournisseur, si applicable. -
Quantity (
int)
Quantité à pré-réserver ou à libérer. -
Attachment (
AncillaryAttachmentEnum)
Niveau de rattachement de l’article annexe. -
ParentId (
string?)
Identifiant du parent si l’article annexe est rattaché à un élément spécifique. -
BasketDetail (
BasketDetailModel?)
Détail du panier courant.
SetAncillariesSelectionResponseModel
-
IsSuccess (
bool)
Indique si l’appel a réussi. -
ErrorMessage (
string?)
Message d’erreur en cas d’échec. -
HoldId (
string)
Identifiant de pré-réservation côté fournisseur. -
BasketActions (
List<AncillaryBasketActionModel>)
Actions complémentaires à appliquer au panier.
AncillaryBasketActionModel :
-
Action (
AncillaryBasketActionEnum)
Action à exécuter. -
ActionDataJson (
string)
Données JSON associées à l’action.
Valeurs supportées actuellement :
AddEventDateItemRemoveItem
BookAncillaries(BookAncillariesRequestModel, CancellationToken)
Cette méthode confirme définitivement les ancillaires pré-réservés lors de la validation du panier.
BookAncillariesRequestModel
-
ModuleDefinitionId (
string)
Identifiant de la définition du module cible. -
ModuleInstanceId (
string)
Identifiant de l’instance du module cible.
BookAncillariesResponseModel
- ExternalOrderId (
string)
Identifiant de commande côté fournisseur externe.
Recommandations d’implémentation
- Implémenter la façade via
AbstractClientSideAncillariesModuleFacade. - Retourner des identifiants stables pour les pré-réservations et les réservations.
- Gérer l’idempotence des appels de sélection.
- Respecter le rattachement fonctionnel des articles annexes via
attachmentetparentId. - Prévoir la libération des pré-réservations non confirmées en cas d’annulation de panier.
- Recalculer les suggestions après chaque modification significative du panier.