Le code développé ci-dessous permet de générer de façon automatique les numéros de série à l'entrée, typiquement dans une séquence d'achats. Le principe de ce code est de s'intégrer dans cette fenêtre et d'y créer les lignes souhaitées :
Ceci est nécessaire car cet écran effectue toute une série de contrôles sur les numéros de série : unicité, longueur, ... Le cas échéant, si une erreur est détectée, cet écran restera visible et le message d'erreur sera affiché ; l'utilisateur pourra alors apporter les corrections manuellement. Ceci justifie donc pourquoi cet écran, quand il n'y a pas d'erreur, est visible un bref instant.
Le code doit être placé dans un customizer Billing associé à la séquence d'achats de la gestion commerciale. Pour cet exemple, il crée 3 numéros de série : ABC, DEF et GHE.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using MercatorDatabase;
namespace Billing
{
public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
{
public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
{
BillingEngine.SerialSubEngine.AskSerialShown += BillingEngineSerialSubEngine_AskSerialShown;
}
public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
{
BillingEngine.SerialSubEngine.AskSerialShown -= BillingEngineSerialSubEngine_AskSerialShown;
}
void BillingEngineSerialSubEngine_AskSerialShown(object sender, MercatorUi.Engine.Gescom.SerialSubEngine.AskSerialShownEventArgs e)
{
if (e.GescomAskSerial.AllowMultiple && e.GescomAskSerial.Inward)
{
e.GescomAskSerial.ButtonGridIn.PerformClick(); // montrer la grille
DataTable dt = (DataTable)e.GescomAskSerial.GridIn.DataSource;
dt.Rows.Add(new string[1] { "ABC" });
dt.Rows.Add(new string[1] { "DEF" });
dt.Rows.Add(new string[1] { "GHE" });
e.GescomAskSerial.ButtonOk.PerformClick();
}
}
}
}