Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Dans le LinesEditor, intervenir avant que Mercator n'interprète la valeur

0000003032     -      21/12/2021

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é.

Zoom
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);
            }
        }
    }
}