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

0000003032     -      22/12/2024

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(Form form)
        {
            MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)form;
            if (billingForm.LinesEditor != null)
                billingForm.LinesEditor.BeforeCellValidated += BillingFormLinesEditor_BeforeCellValidated;
        }

        public void FormClosedCustomize(Form form)
        {
            MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)form;
            if (billingForm.LinesEditor != null)
                billingForm.LinesEditor.BeforeCellValidated -= BillingFormLinesEditor_BeforeCellValidated;
        }

        void BillingFormLinesEditor_BeforeCellValidated(object sender, 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);
            }
        }
    }
}


Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)