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

Stel een standaardwaarde in bij het maken van een nieuw Lot in de interface

0000002883     -      07-04-2020

De hier getoonde code laat zien hoe u in het dialoogvenster voor ingave van een Lot een waarde instelt voor één of meer kolommen (uit de ARTLOT-tabel). Het voorbeeld laat zien hoe u een vervaldatum voor een product berekent, beginnend vanaf de datum van vandaag vermeerderd met een maximum aantal bewaardagen vastgelegd in het artikelblad. Dit aantal dagen zal worden opgeslagen in een nieuwe kolom van de STOCK-tabel, die moet worden aangetoond in de ARTLOT-tabel. De berekende houdbaarheidsdatum (DLC) wordt in een kolom met dezelfde naam in de ARTLOT-tabel geplaatst.

alter table STOCK add S_DLU_JOURS smallint not null default 0
alter table ARTLOT add S_DLU_JOURS smallint not null default 0
alter table ARTLOT add DLC date not null default '01/01/1900'

De code bestaat uit een Billing customizer die gebruik maakt van het event AskLotAddingRow van de LotSubEngine die met name toegankelijk is vanuit de BillingEngine.

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.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.LotSubEngine.AskLotAddingRow += LotSubEngine_AskLotAddingRow;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.LotSubEngine.AskLotAddingRow -= LotSubEngine_AskLotAddingRow;
        }

        private void LotSubEngine_AskLotAddingRow(object sender, MercatorUi.Engine.Gescom.LotSubEngine.AskLotAddingRowEventArgs e)
        {
            e.NewRow["dlc"] = DateTime.Today.AddDays(Convert.ToInt32(e.NewRow["s_dlu_jours"]));
        }

    }
}