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.
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
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;
}
}
}