L'exemple ici montre comment empêcher l'affichage d'un document de la gestion commerciale en fonction de n'importe quelle condition. (L'exemple est fait ici pour empêcher l'affichage du document si le champ HEURE du pied contient une valeur en heures inférieure à 12 - C'est juste pour l'exemple !)
La condition en question doit être écrite à la ligne 13 qui, dans notre exemple, contient
if (Api.ValSafeInt(Api.Left(BillingEngine.PIEDS["heure"].ToString(), 2)) < 12) Le code doit être placé dans un customizer Billing créé à partir de la séquence correspondante. Il implémente l'interface MercatorUi.ICustomizers.IBillingEngineCreated.
Il exploite essentiellement l'évènement Initialized du BillingEngine du document en cours.
Le code s'établit comme suit :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
namespace Billing
{
public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated
{
public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
{
BillingEngine.Initialized += BillingEngine_Initialized;
}
void BillingEngine_Initialized(object sender, MercatorUi.Engine.Gescom.BillingEngine.InitializedEventArgs e)
{
MercatorUi.Engine.Gescom.BillingEngine BillingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
BillingEngine.Initialized -= BillingEngine_Initialized;
if (Api.ValSafeInt(Api.Left(BillingEngine.PiedsVRecord.HEURE, 2)) < 12)
{
Dialogs.Stop("Vous n'avez pas le droit de travailler dans cette séquence le matin !");
e.Cancel = true; // ceci bloque la création du billingEngine et donc la BillingForm associée ne sera pas instanciée
}
}
}
}
Notez que le même procédé peut être appliqué :
-
pour les écritures comptables, dans le BookingEngine
-
pour les actions du CRM, dans le ActionEngine
-
pour les transferts de dépôts, dans le TransferEngine