Etendre le filtrage par représentant à un second champ

0000002896     -      20/10/2021

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 :

Zoom
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())));
        }
    }
}