Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Gestion des catégories multiples dans les signalétiques

0000002984     -      19/10/2020

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égoriepermettant 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".

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


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).