Cette programmation permet d'intervenir au niveau du LinesEditor des ventes, des achats, des transferts de dépôts ou des inventaires avant que Mercator n'interprète la valeur encodée dans une cellule.
Ceci peut être utilisé, par exemple, pour prétraiter une donnée qui serait envoyée par une douchette dans la cellule et qui devrait être modifiée.
Dans l'exemple ci-dessous, la douchette envoie l'information "1*" devant la valeur significative à chaque scan. Ces deux premiers caractères sont retirés de la clé.
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.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
public void FormLoadCustomize(System.Windows.Forms.Form WindowsForm)
{
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)WindowsForm;
if (billingForm.LinesEditor != null)
billingForm.LinesEditor.BeforeCellValidated += billingFormLinesEditor_BeforeCellValidated;
}
public void FormClosedCustomize(System.Windows.Forms.Form WindowsForm)
{
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)WindowsForm;
if (billingForm.LinesEditor != null)
billingForm.LinesEditor.BeforeCellValidated -= billingFormLinesEditor_BeforeCellValidated;
}
void billingFormLinesEditor_BeforeCellValidated(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
MercatorUi.Forms.Billing.BillingObjects.LinesEditor linesEditor = (MercatorUi.Forms.Billing.BillingObjects.LinesEditor)sender;
if ((e.RowIndex > -1) && (e.ColumnIndex > -1) && (linesEditor.Grid.Columns[e.ColumnIndex].Name == "id_article"))
{
string id_article = linesEditor.Grid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().TrimEnd();
if (id_article.EndsWith("%") && id_article.StartsWith("1*"))
linesEditor.Grid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = id_article.Substring(2);
}
}
}
}