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;
// ne pas regrouper sur les valeurs différentes de LIGNES_V.CUSTOM_COL1 et LIGNES_V.CUSTOM_COL2
string[] supplColumns = new string[] { "CUSTOM_COL1", "CUSTOM_COL2" };
// conditions supplémentaires écrites dans la syntaxe de DataTable.Select()
string additionalConditionsOnLignes = "(q > 0)" // ne regrouper que les lignes de quantités positives
+ " and (id_article<>'S_ID1') and (id_article<>'S_ID2')"; // ne jamais regrouper ces deux articles
// tenir compte de PU, REMISE, REMISE2, ... -> donc ne regrouper que si PU, REMISE, REMISE2, ... sont identiques
bool doNotChangePuRemises = true;
// conserver les lignes avec un commentaire dans la désignation
bool keyComments = true;
billingEngine.Group(supplColumns, additionalConditionsOnLignes, doNotChangePuRemises, keyComments);
}
}
}
Si on souhaite effectuer la même personnalisation du regroupement lorsqu'il est exécuté via le menu contextuel, il suffit de placer ce customizer qui utilise l'événement BeforeGroup du BillingEngine
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;
}
}
}