Code uitvoeren bij het uitwisselen met de McdServerService

0000002358     -      08-09-2017

Mercator kan code uitvoeren tijdens de uitwisseling met de McdServerService. Dit kan gedaan worden door gebruik te maken van static events die beschikbaar zijn in MercatorUi.McdClient.McdClientStatic:

  • BeforeExport
  • AfterExport
  • BeforeImport
  • AfterImport

Deze events verwachten eventArgs die volgende properties bevat:

  • Dictionary<mcdclientclasses.mcdbasedicokeyenum, mcdclientclasses.mcditemdescriptor=""> DicoBase : lijst van import-export elementen</mcdclientclasses.mcdbasedicokeyenum,>
  • StringBuilder SbErr : eventuele foutmeldingen
  • Boolean Cancel (uniek voor het Before-event): op true zetten indien men het proces wenst te onderbreken.

Ze worden uitgevoerd in Mercator die de uitwisseling uitvoert (niet in McdServerService)

Ze worden uitgevoerd in Mercator die de uitwisseling uitvoert (niet in McdServerService) Het voorbeeld hieronder start vanuit een realistische ontwikkeling. Het illustreert simpelweg volgende 2 functies:

  1. De mogelijkheid om vertegenwoordigers te exporteren is weggevallen.
  2. Indien men een een winkel-export selecteert, wordt het proces onderbroken.
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;


namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                MercatorUi.McdClient.McdClientStatic.BeforeExport += new MercatorUi.McdClient.McdClientStatic.BeforeExportEventHandler(McdClientStatic_BeforeExport);
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                MercatorUi.McdClient.McdClientStatic.BeforeExport -= new MercatorUi.McdClient.McdClientStatic.BeforeExportEventHandler(McdClientStatic_BeforeExport);
            }
        }

        void McdClientStatic_BeforeExport(MercatorUi.McdClient.McdClientStatic.BeforeExportEventArgs e)
        {
            if (e.DicoBase.ContainsKey(MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutReps))
            {
                e.DicoBase.Remove(MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutReps);
            }

            if (e.DicoBase.ContainsKey(MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutMagasins) && e.DicoBase[MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutMagasins].Selected)
            {
                e.SbErr.AppendLine("De magazijnen kunnen niet geëxporteerd worden !!!");
                e.Cancel = true;
            }
        }
    }
}

 

Andere paginas betreffende de configuratie van het uitwisselen met de McdServerService :