Het bewaren van een verkoopdocument van commercieel beheer blokkeren indien het een artikel aan een nulprijs bevat

0000002209     -      18-12-2018

Met onderstaande code kan men het bewaren van een verkoopdocument van commercieel beheer blokkeren indien het een artikel aan een nulprijs bevat.

De code moet in een Billing-customizer geplaatst worden die gecreëerd werd vanuit de bijbehorende sequentie. Dit implementeert de volgende interfaces:

Maakt vooral gebruik van het event BeforeSave 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.Linq;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.BeforeSave += BillingEngine_BeforeSave;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.BeforeSave -= BillingEngine_BeforeSave;
        }

        void BillingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            if (billingEngine.LignesVRecords.Where(l => (l.ID_ARTICLE != "") && (l.PU.CompareTo(0d, billingEngine.NDecPu) == 0)).Any())
            {
                Dialogs.Stop("De verkoop kan niet worden opgeslagen!\r\nBepaalde artikelen zijn aan nul geprijsd!");
                e.CancelSave = true; // stopt het bewaarproces
                return;
            }
        }
    }
}