Mercator 10.4 ou ultérieur permet le filtrage par représentant dans les signalétiques. Ce concept peut être facilement étendu à un second champ : dans cet exemple CLI.C_ID_REP2 char(10). Pour cela, il suffit d'utiliser l’événement ApplyingAdditionalCriteria de la classe Sig. Le code est assez simple puisque la clause where calculée par Mercator, disponible dans e.ReqSql, contiendra (c_id_rep='...') si le filtrage est actif et ne contiendra pas cette chaîne de caractères dans le cas contraire.
Le code est donc le suivant :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
namespace SigCli
{
public class Customizer : MercatorUi.ICustomizers.ISigCreated
{
public void SigCreated(MercatorUi.Sig.Sig sig)
{
sig.ApplyingAdditionalCriteria += sig_ApplyingAdditionalCriteria;
}
void sig_ApplyingAdditionalCriteria(object sender, MercatorUi.Sig.Sig.ApplyingAdditionalCriteriaEventArgs e)
{
e.ReqSql = e.ReqSql.Replace(string.Format("(c_id_rep='{0}')", Api.UnquoteSql(Globals.CurrentUser["id_rep"].ToString())), string.Format("((c_id_rep='{0}') or (c_id_rep2='{0}'))", Api.UnquoteSql(Globals.CurrentUser["id_rep"].ToString())));
}
}
}