De weergave van een commercieel beheersdocument blokkeren in overeenstemming met om het even welke voorwaarde

0000002223     -      27-08-2017

Dit voorbeeld toont hoe de weergave van een commercieel beheersdocument geblokkeerd kan worden in overeenstemming met om het even welke voorwaarde. (Dit voorbeeld toont hoe de weergave van een document voorkomen wordt indien het veld HEURE van de hoofding een waarde in uren bevat die lager is dan 12 - dit is slechts een voorbeeld!)

De betreffende voorwaarde moet in lijn 13 worden geschreven, die in ons voorbeeld het volgende bevat:

if (Api.ValSafeInt(Api.Left(BillingEngine.PIEDS["heure"].ToString(), 2)) < 12)

De code moet in een Billing-customizer geplaatst worden die gecreëerd werd vanuit de bijbehorende sequentie. Dit implementeert de interface MercatorUi.ICustomizers.IBillingEngineCreated.

Maakt vooral gebruik van het event Initialized van de BillingEngine van het huidige document.

De code wordt als volgt samengesteld:

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

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated
    {

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.Initialized += BillingEngine_Initialized;
        }

        void BillingEngine_Initialized(object sender, MercatorUi.Engine.Gescom.BillingEngine.InitializedEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine BillingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            BillingEngine.Initialized -= BillingEngine_Initialized;
            if (Api.ValSafeInt(Api.Left(BillingEngine.PiedsVRecord.HEURE, 2)) < 12)
            {
                Dialogs.Stop("U mag 's ochtends niet in deze sequentie werken!");
                e.Cancel = true; // dit blokkeert de aanmaak van de BillingEngine en dus wordt de daaraan gekoppelde BillingForm niet geïnstancieerd
            }
        }
    }
}

Merk op dat hetzelfde procedé kan worden toegepast:

  • voor boekingen, in BookingEngine
  • voor CRM-acties, in ActionEngine
  • voor depottransfers, in TransferEngine