U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Etiketten afdrukken bij validatie van een artikelfiche na een prijswijziging

0000002109     -      26-08-2017

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("Le prix de vente à changé. Voulez-vous imprimer des étiquettes ?", 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.
        }
    }
}