De code moet in een Billing-customizer geplaatst worden die gecreëerd werd vanuit de bijbehorende sequentie. Implementeert de volgende interfaces:
Maakt vooral gebruik van het event BeforeSave van de BillingEngine van het huidige document.
De code wordt als volgt samengesteld:
using MercatorUi;
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;
}
void BillingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
{
MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
if (billingEngine.BillingForm == null)
return; // het betreft waarschijnlijk een automatische verwerking, deze BillingEngine is niet gekoppeld aan een BillingForm-scherm
string id_user = MercatorUi.Forms.Login.LoginAskFormStatic.ShowDirect(_Divers.Iif_langue(Globals.Langue, "Kennwort ?", "Password ?", "Wachtwoord ?", "Code d'entrée ?"));
if (string.IsNullOrEmpty(id_user))
e.CancelSave = true;
else
billingEngine.PiedsVRecord.ID_USER = billingEngine.UserIdForAudit = id_user;
}
}
}
💡 Merk de aanwezigheid op van « billingEngine.UserIdForAudit = » die ervoor zorgt dat de audit die eventueel voor dit type document is geactiveerd rekening houdt met deze wijziging van gebruiker.