Deze programmering laat zien hoe u tussenkomt bij de selectie van de klant in een verkoopdocument. Ze omvat gewoon een dialoogvenster waarin u de selectie van de klant kunt bevestigen of annuleren. Is de klant aanvaard, dan wordt zijn locatie in de zone "Referentie" ingevoerd. Deze customizer wordt gecreëerd voor het voorbeeld en kan als vertrekpunt dienen voor meer ambitieuze programmeringen. Het hieronder geïllustreerde principe geldt ook voor de aankopen in de boekhouding, met het oog op het beheer van de leveranciersselectie.
De code moet worden ingevoerd in een Booking-customizer gecreëerd op basis van de overeenstemmende boekhoudsequentie. Deze implementeert de volgende interfaces:
Hierbij wordt hoofdzakelijk het event BeforeApplyCustomerSupplier van de BookingEngine van het actieve document gebruikt. Dit event laat toe om de voortzetting van de procedure te annuleren.
De code ziet er als volgt uit:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
namespace Booking
{
public class Customizer : MercatorUi.ICustomizers.IBookingEngineCreated, MercatorUi.ICustomizers.IBookingEngineClosed
{
public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
{
BookingEngine.BeforeApplyCustomerSupplier += new MercatorUi.Engine.Cpta.BookingEngine.BeforeApplyCustomerSupplierEventHandler(BookingEngine_BeforeApplyCustomerSupplier);
}
public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
{
BookingEngine.BeforeApplyCustomerSupplier -= new MercatorUi.Engine.Cpta.BookingEngine.BeforeApplyCustomerSupplierEventHandler(BookingEngine_BeforeApplyCustomerSupplier);
}
void BookingEngine_BeforeApplyCustomerSupplier(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeApplyCustomerSupplierEventArgs e)
{
MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;
string ville = MercatorController.xFunctions.xLookUpString("CLI", "C_ID", e.IdCliOrFou, "C_VILLE").TrimEnd();
if (Dialogs.AnswerYesNo(string.Format("Klant \"{0}\" woonachtig in {1} aanvaarden?", e.IdCliOrFou, ville)))
bookingEngine.PiedsCRecord.REFERENCE = ville;
else
e.CancelApplyCustomerSupplier = true; // Deze flag laat Mercator weten dat men de selectie van deze klant weigert.
}
}
}