Aller au contenu

Champs personnalisés

Les champs personnalisés permettent d'associer des informations supplémentaires à un panier. Ces informations sont réclamées par les différents acteurs du panier (les représentations, évènements, tarifs, modules impliqués, etc.).

Les modules de vente doivent impérativement fournir les valeurs de champs requises pour permettre la validation du panier.

Dans l'API 'Basket', la liste des champs attendus est récupérable via la méthode GetCustomFields, et la transmission des valeurs se fait avec la méthode SetCustomFields.

Modification du panier

Toute modification du panier peut entraîner la modification des champs attendus. Il est donc conseillé d'appeler GetCustomFields/SetCustomFields en fin de parcours, ou à défaut de s'assurer
que les champs requis sont bien renseignés après chaque modification du panier.

Organisation des champs

La méthode GetCustomFields retourne la liste des champs personnalisés attendus pour le panier.
Les informations peuvent être attendues à différents niveaux :

  • Globalement, pour tout le panier (la commande : Order)
  • Globalement pour le panier, mais spécifiquement rattachées au client (informations client : Customer).
  • Au niveau d'un 'produit' particulier (ex: "Le concert du 3 avril à 20h") : Items.
  • Au niveau d'un 'produit' à un 'tarif' particulier (ex: "Le concert du 3 avri à 20h" en "tarif réduit") : Items/Lines.
  • Au niveau d'un élément spécifique du panier (ex: un billet particulier) : `Items/Lines/Items'.

Ces différents niveaux sont appelés des sections (FieldInventorySection).

Description de l'inventaire des champs

Les champs (FieldInventoryItemInfo) sont regroupés par groupe (FieldInventoryGroupInfo).
Un groupe est un ensemble logique de champs, utilisé principalement pour structurer l'affichage.

Groupe de champs (FieldInventoryGroupInfo)

Propriété Type Description
Name string Nom interne du groupe de champs. Cette valeur peut être utilisée comme identifiant pour le stockage des valeurs dans les modules qui le souhaitent.
Label string Libellé du groupe de champs, destiné à l'affichage.
Description string Description du groupe de champs, destiné à l'affichage.
DisplayOrder int Ordre d'affichage du groupe de champs au sein de la section parente (du plus petit au plus grand).
IconSvg string Eventuel code SVG de l'icône associée au groupe de champs, destinée à l'affichage.
Fields List<FieldInventoryItemInfo> Liste des champs appartenant à ce groupe.

Champ personnalisé (FieldInventoryItemInfo)

Propriété Type Description
Name string Identifiant du champ (unique dans un groupe).
UniqueName string Nom unique de la propriété associée au champ personnalisé.
Lorsque la valeur est associée à un élément de ligne (Items/Lines/Items), elle doit être spécifiée autant de fois que la quantité associée à la ligne, avec un UniqueName suffixé de $x ou x est l'indice de la valeur (base 0).
Label string Libellé du champ dans les formulaires.
Description string Description optionnelle du champ dans les formulaires.
PromptMode FieldPromptModeEnum Informations sur le mode de saisie/transmission des valeurs. Les valeurs possibles sont : Auto (aucune préconisation, dépend du type d'interface), ShowReadOnly (lecture seule, affichage sans modification), ShowWriteOnly (écriture seule, saisie obligatoire sans pré-remplissage), Hidden (aucun affichage, valeur attendue mais sans saisie utilisateur).
Parameters FieldDefinitionParameters (voir ci-dessus) Paramètres de configuration du champ personnalisé.
Paramètres de définition du champ (FieldDefinitionParameters)
Propriété Type Description
IsRequired bool Indique si le champ est obligatoire.
RequiredMessage string Si spécifié, indique le message à afficher si le champ obligatoire n'est pas renseigné.
Validators List<IFieldValidator> (voir ci-dessous) Liste des validateurs à appliquer au champ.
ValueType CustomFieldTypeEnum Type de valeur du champ personnalisé (String, Number, Boolean, DateTime).
StringKind StringFieldKindEnum Type de champ String : indique le genre de la chaîne de caractères attendue (Standard, Email, PhoneNumber, Multiline, Lookup, Url )
DateTimeKind DateTimeFieldKindEnum Type de champ DateTime : indique le sous-type (DateOnly, TimeOnly, DateAndTime)
NbDecimals int? Type de champ Number : Nombre de décimales à afficher pour les champs numériques.
Tooltip string Infobulle affichée à l'utilisateur lors de la saisie.
IconSvg string Icône SVG associée au champ pour l'affichage.
DisplayOrder int Ordre d'affichage du champ à l'intérieur du groupe (du plus petit au plus grand).
DefaultWidth FieldSizeEnum Indication de largeur d'affichage par défaut du champ (Unspefied, Small, Medium, Large, XLarge). Il s'agit d'une indication pouvant être utilisée pour organiser l'interface utilisateur du formulaire; le développeur est libre d'en tenir compte ou non.
IsMultiSelect bool Indique si la sélection multiple est autorisée pour les listes de valeurs (Lookup). Si les valeurs multiples sont aurtorisées, elles devront être séparées par une virgule , dans la valeur fournie.
LookupItems List<LookupFieldItem> (_voir ci-dessous) Liste des éléments disponibles pour un champ de type lookup.
Validateur de champ (IFieldValidator)

Les validateurs sont utilisés pour vérifier la validité des valeurs saisies dans les champs personnalisés. Un type de validateur est identifié par son nom (Name) et peut posséder un ou plusieurs paramètres de configuration de la validation.

Validateurs pour les champs de type String

Type de validateur (Name) Paramètres supplémentaires
MinLength MinLength (int) : longueur minimale autorisée.
MaxLength MaxLength (int) : longueur maximale autorisée.
Regex Pattern (string) : expression régulière que la valeur doit respecter.
ErrorMessage : message à afficher en cas d'erreur de validation.
MaxLines MaxLines (int) : nombre maximal de lignes autorisées (pour les champs Multiline).

Validateurs pour les champs de type Number

Type de validateur (Name) Paramètres supplémentaires
MinValue MinValue (double) : valeur minimale autorisée.
MaxValue MaxValue (double) : valeur maximale autorisée.

Validateurs pour les champs de type DateTime

Type de validateur (Name) Paramètres supplémentaires
MinDateTime MinDateTime (double) : Date minimale autorisée.
MaxDateTime MaxDateTime (double) : Date maximale autorisée.
Elément de liste pour les champs Lookup (LookupFieldItem)

Lorsqu'un champ personnalisé est de type Lookup, la liste des valeurs possibles est définie via des éléments LookupFieldItem.

Propriété Type Description
Value string Valeur interne de l'élément de liste. C'est cette valeur qui doit être renseignée dans le champ de référence lorsque cette ligne est sélectionnée.
Label string Libellé de l'élément de liste, destiné à l'affichage.
Description string Description optionnelle de l'élément de liste, destinée à l'affichage.
IconSvg string Eventuel code SVG de l'icône associée à l'élément de liste, destinée à l'affichage.
DisplayOrder int Ordre d'affichage de l'élément de liste (du plus petit au plus grand).

Enregistrement des valeurs des champs personnalisés

Les valeurs des champs personnalisés sont transmises via la méthode SetCustomFields.
Chaque valeur est transmise en utilisant le UniqueName du champ personnalisé comme identifiant, et la valeur associée.
Toutes les valeurs sont placées au même niveau dans le tableau des valeurs, quel que soit le niveau de la section d'origine (commande, client, produit, tarif, élément).

Valeurs associées aux éléments de ligne

Pour les champs personnalisés associés aux éléments de ligne (Items/Lines/Items), la valeur doit être fournie autant de fois que la quantité associée à la ligne, avec un UniqueName suffixé de $xx est l'indice de la valeur (base 0).
Par exemple, pour une ligne avec une quantité de 3 et un champ personnalisé ayant pour UniqueName la valeur SeatNumber, les valeurs doivent être fournies avec les identifiants suivants : P20$xx$SeatNumber$0, P20$xx$SeatNumber$1, P20$xx$SeatNumber$2.

Exemple de transmission des valeurs des champs personnalisés :

{
  "Order$CustomerNote": "Merci de prendre en compte mes desiderata",
  "Customer$birthDate": "2001-02-10",
  "Item$P20$xx$SeatNumber$0": "A12",
  "Item$P20$xx$SeatNumber$1": "A13",
  "Item$P21$yy$itemNum$0": 123.45,
  "Item$P21$yy$isStudent$1": true  
}