In een boekhoudkundig document: de rekeningselectie bevestigen en de rekeningomschrijving invoeren in het commentaarveld

0000002035     -      26-08-2017

Deze programmering laat zien hoe u tussenkomt bij de selectie van de algemene rekening (op iedere lijn) in een boekhoudkundig document. Ze omvat gewoon een dialoogvenster waarin u de selectie van de algemene rekening kunt bevestigen of annuleren. Als de rekening wordt aanvaard, wordt de rekeningomschrijving in de zone "Commentaar" van diezelfde lijn ingevoerd. Deze customizer wordt gecreëerd voor het voorbeeld en kan als vertrekpunt dienen voor meer ambitieuze programmeringen.

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 BeforeInsertAccount 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:

Zoom
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.BeforeInsertAccount += BookingEngine_BeforeInsertAccount;
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            BookingEngine.BeforeInsertAccount -= BookingEngine_BeforeInsertAccount;
        }

        void BookingEngine_BeforeInsertAccount(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeInsertAccountEventArgs e)
        {
            if (e.Sig.Module == MercatorUi.Sig._SigEnum.GEN) // We testen of we een algemene rekening inschrijven: dat zal altijd het geval zijn bij een verkoop of een aankoop.
            {
                if (Dialogs.AnswerYesNo(string.Format("De algemene rekening \"{0}\" echt kiezen?", e.GenRecord.G_NOM)))
                    e.LignesCRecord.COMMENTAIR = e.GenRecord.G_NOM;
                else
                    e.CancelInsertAccount = true; // Deze flag laat Mercator weten dat men de selectie van deze alg. rekening weigert.
            }
        }
    }
}