Etiketten afdrukken bij validatie van een artikelfiche na een prijswijziging

0000002109     -      14-07-2022

Het onderstaande voorbeeld toont hoe het afdrukken van etiketten bij validatie van een artikelfiche voorgesteld kan worden als de verkooprijs incl. btw (S_PRIX_TI) gewijzigd is en als het artikel een afdruk van etiketten vereist (S_ETIQ>=2). Het is opgemaakt in de vorm van een SigStock-customizer die de interface MercatorUi.ICustomizers.IFormValidateCustomizer implementeert. Wij gebruiken de methode FormValidateCustomize die uitgevoerd wordt in het begin van het validatieproces.

Deze programmering maakt gebruik van de mogelijkheid die het framework .net biedt, om voorafgaand aan de wijziging van een veld makkelijk een waarde te vinden in een DataRow.

double s_prix_ti_old = Convert.ToDouble(sigForm.DataSourceRow["S_PRIX_TI", DataRowVersion.Original]);

De code ziet er als volgt uit:

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using MercatorExtensions;

namespace SigStock
{
    public class Customizer : MercatorUi.ICustomizers.IFormValidateCustomizer
    {
        public bool FormValidateCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            if (sigForm.StockRecord.S_ETIQ <= 1) // als afdruk etiketten = "geen"
                return true;
            double s_prix_ti_current = sigForm.StockRecord.S_PRIX_TI;
            double s_prix_ti_old = Convert.ToDouble(sigForm.DataSourceRow["S_PRIX_TI", DataRowVersion.Original]);
            if (s_prix_ti_current.CompareTo(s_prix_ti_old, 5) != 0) // Bij vergelijking van de doubles/floats moet men verplicht afronden, want niet ieder reëel getal kan worden weergegeven.
            {
                int i = MercatorUi.Dialogs.Answer3Buttons("De verkoopprijs werd aangepast. Wilt u etiketten afdrukken?", Api.Iif_langue(Globals.Langue, 2), Api.Iif_langue(Globals.Langue, 3), Api.Iif_langue(Globals.Langue, 1)); // Ja, Neen, Annuleren
                if (i == 3) // Annuleren
                    return false;
                if (i == 1)
                    sigForm.Sig.Labels(sigForm, true, sigForm.DataSourceRow);
            }
            return true; // Het validatieproces wordt niet geblokkeerd.
        }
    }
}