Gestion des catégories multiples dans les signalétiques

0000002984     -      10/12/2021

Mercator 10.8 ou ultérieur permet de gérer des catégories multiples sur les signalétiques. Il s'agit d'une extension des déroulants de catégorie permettant la sélection de plusieurs éléments. 

cat_combo        

Comme pour les déroulants, les éléments proviennent des catégories définies dans "Outils > Paramètres > Catégories".

Pour installer cette fonctionnalité, il faut tout d'abord s'assurer que ce Mercator est dans la dernière version disponible. Il faut ensuite ajouter un ou plusieurs champ(s) de type varchar(max) dans la table de base du signalétique (CLI, FOU, STOCK, ...). Pour être reconnu, le nom de ce nouveau champ doit être fixé comme suit :

  • la première lettre de ce signalétique 
  • "_CAT"
  • le numéro de la catégorie
  • "_MULTI"

Par exemple, S_CAT1_MULTI, C_CAT2_MULTI, ...

alter table STOCK add S_CAT1_MULTI varchar(max) not null default ''

alter table CLI add C_CAT2_MULTI varchar(max) not null default ''

Lors de son prochain démarrage, Mercator va créer automatiquement une table permettant d'effectuer des recherches indexées sur base des valeurs cochées dans ces listes :

  • CAT_STCK_MULTI
  • CAT_CLI_MULTI
  • ...

Ces tables ne doivent jamais être créées manuellement. De même, leur contenu est géré automatiquement par un trigger qui répercute les modifications apportées dans les champs varchar(max).

Via le paramétrage de l'écran du signalétique, il faut remplacer la ComboBox par une ListBox à laquelle il faut attacher la source correspondante (ex : C_CAT2_MULTI)

Lors d'un filtrage, on constatera que Mercator, afin d'optimiser ses recherches, utilise ces tables. Dans d'autres requêtes personnalisées, il est recommandé d'utiliser ce même type d'approche plutôt que like %...% dans la colonne varchar(max) :

where ... and exists(select * from CAT_STCK_MULTI where (id_sig=stock.s_id) and (type=1) and (id_cat='C0NB0MU7X8'))

Quand le signalétique est en mode filtrage, ces éléments sont ajoutés au menu contextuel :

cat_combo_filtrer

Ils permettent de choisir comment les différents critères cochés doivent être combinés :

  • Et : on recherche les fiches dans lesquelles tous les critères choisis dans le filtre sont cochés
  • Ou : on recherche les fiches dans lesquelles au moins un des critères choisis est coché.

Notes

  • En terme de structure de base de données, il n'y a aucun conflit entre le déroulant de catégorie (par exemple, S_CAT1) et la liste correspondante (S_CAT1_MULTI). En effet, il s'agit de champs différents qui ont tout au plus en commun une liste d'éléments sélectionnables. Toutefois, pour plus de clarté en ce qui concerne les données, il est probablement utile, voire nécessaire, de retirer le déroulant si la liste est proposée.
  • Cette information n'est pas prise en compte en tant que catégories pour les rappels ou les informations de "Outils > Remises".

Import

Lors de l'import par fichier (Excel, XML, ...), il est possible d'importer le contenu des champs varchar(max) décrits ci-dessus. Pour cela, il faut composer une valeur qui est la concaténation des ID de catégorie séparés par un pipe |.

Par exemple : C0NB0MU7X8|D0NB0MU7X9|6623EA6D78|8CF37D03D7

Depuis la version 10.10, il est aussi possible d'importer ces données en concaténant les libellés de catégories, séparés par un pipe |. Dans ce cas, le nom de la colonne doit être CAT1_MULTI, CAT2_MULTI, ... (sans le S_, C_, ...). L'import bulk ne permet toutefois pas ce type d'import.

Par exemple : Accessoires|Widgets|Produits finis|Produits semi-finis


Initialisation

Vous trouverez ci-dessous la requête qui permet d'initialiser par défaut la liste des catégories avec la valeur de la catégorie sélectionnée dans la liste déroulante. Celle-ci doit être exécutée après installation complète et redémarrage de Mercator.

update zzz set x_catn_multi = CAT_yyy.ID
	from zzz
	inner join CAT_yyy on (CAT_yyy.nom = zzz.x_catn) and (CAT_yyy.type = n)
où :
  • zzz indique la table (par exemple : CLI, STOCK)
  • yyy indique la table (par exemple : CLI; exception pour la table STOCK : STCK)
  • x indique la lettre représentant la table (par exemple : c, s)
  • n indique le numéro de la catégorie (par exemple : 2).

Dans MercatorPenguin

Les catégories multiples peuvent aussi être utilisées dans les écrans des signalétiques de MercatorPenguin (version min. = 2.9.9). Pour cela, il faut utiliser un EditMultiPicker.

<m:EditMultiPicker Source="s_cat1_multi" Placeholder="Cat. 1" Margin="25,0,25,0" HorizontalOptions="FillAndExpand" />

Dans l'écran, celui-ci se présente comme une liste des catégories sélectionnées, séparées par une barre verticale.

EditMultiPicker

La sélection des catégories se fait en touchant la liste représentée ci-dessus. Cela produit l'affichage de cette boîte de dialogue, qui permet la sélection des catégories souhaitées :

      EditMultiPickerIos

L'EditMultiPicker contient la propriété optionnelle DialogText qui permet de déterminer le titre de cette boîte de dialogue. Par défaut, ce titre vaut le PlaceHolder, s'il est défini, sinon la Source.