Hoe lijnen in de Billing Engine groeperen volgens bepaalde criteria?

0000002449     -      21-08-2026

Deze customizer laat ons toe om lijnen te hergroeperen in de BillingEngine volgens verschillende criteria.

Het werkt op dezelfde manier als de groepering die je krijgt via rechtsklik + groep in het rooster maar is voor het bewaren uitgevoerd.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using System.Linq;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave += BillingEngine_BeforeSave;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave -= BillingEngine_BeforeSave;
        }

        private void BillingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;

            // niet groeperen op verschillende waarden van LIGNES_V.CUSTOM_COL1 en LIGNES_V.CUSTOM_COL2
            string[] supplColumns = new string[] { "CUSTOM_COL1", "CUSTOM_COL2" };

            // bijkomende voorwaarden geschreven in de syntaxis van DataTable.Select()
            string additionalConditionsOnLignes = "(q > 0)" // enkel lijnen met positieve hoeveelheden groeperen
                + " and (id_article<>'S_ID1') and (id_article<>'S_ID2')"; // deze twee artikels nooit groeperen

            // rekening houden met PU, REMISE, REMISE2, ... -> dus enkel groeperen als PU, REMISE, REMISE2, ... identiek zijn
            bool doNotChangePuRemises = true;

            // lijnen met een commentaar in de omschrijving behouden
            bool keyComments = true;

            billingEngine.Group(supplColumns, additionalConditionsOnLignes, doNotChangePuRemises, keyComments);
        }
    }
}

Indien met dezelfde personalisatie van de groepering wenst uit te voeren wanneer deze via het contextmenu wordt uitgevoerd, volstaat het deze customizer te plaatsen die het event BeforeGroup van de BillingEngine gebruikt

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using System.Linq;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeGroup += BillingEngine_BeforeGroup;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeGroup -= BillingEngine_BeforeGroup;
        }

        private void BillingEngine_BeforeGroup(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeGroupEventArgs e)
        {
            e.Col_Filtre_Sup = new string[] { "CUSTOM_COL1", "CUSTOM_COL2" }; ;
            e.AdditionalConditionsOnLignes = "(q > 0) and (id_article<>'S_ID1') and (id_article<>'S_ID2')";
            e.DoNotChangePuRemises = true;
            e.KeepComments = true;
        }

    }
}


Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)