Cette programmation permet de bloquer la sauvegarde d'un document de vente de la gestion commerciale s'il contient un article à prix nul.
Le code doit être placé dans un customizer Billing créé à partir de la séquence correspondante. Il implémente les interfaces suivantes :
Il exploite essentiellement l'évènement BeforeSave 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.Linq;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
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.LignesVRecords.Where(l => (l.ID_ARTICLE != "") && (l.PU.CompareTo(0d, billingEngine.NDecPu) == 0)).Any())
{
Dialogs.Stop("Impossible de sauvegarder la vente !\r\nCertains articles ont un prix à zéro !");
e.CancelSave = true; // arrête le processus de sauvegarde
return;
}
}
}
}