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

Prijs per hoeveelheid en herinitialisatie van korting 2 na wijziging van de hoeveelheid

0000003437     -      15-02-2026

Hoeveelheidstarieven zijn geactiveerd en een artikel is gedefinieerd met verschillende hoeveelheidsdrempels. De kolom korting 2 is aanwezig. In een verkoopdocument voer ik een artikellijn in met een bepaalde hoeveelheid. Ik geef ook "manueel" een korting 2 in. Wanneer ik later de hoeveelheid wijzig, binnen dezelfde hoeveelheidsdrempel of niet, wordt korting 2 automatisch terug op 0 gezet. Hoe kan men korting 2 in dit scenario behouden?


Bij een wijziging van de hoeveelheid in een verkoop, terwijl hoeveelheidstarieven geactiveerd zijn, herberekent Mercator volledig de verkoopprijs en alle kortingen. Een korting 2 kan bijvoorbeeld afkomstig zijn uit "Tools / Kortingen" (BAREMES). Het beschreven gedrag is dus gewenst en correct. Indien men hiervan wil afwijken, volstaat het om deze eenvoudige customizer te implementeren.

💡 Let op de aanwezigheid van de test if (e.FromChangeQ) die ervoor zorgt dat de code enkel wordt toegepast wanneer de herberekening wordt uitgevoerd na een wijziging van de hoeveelheid in een situatie met hoeveelheidstarieven.

Zoom
// <CompileWithRoslyn />

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

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeApplyPricingInfo += BillingEngine_BeforeApplyPricingInfo;
            billingEngine.AfterApplyPricingInfo += BillingEngine_AfterApplyPricingInfo;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeApplyPricingInfo -= BillingEngine_BeforeApplyPricingInfo;
            billingEngine.AfterApplyPricingInfo -= BillingEngine_AfterApplyPricingInfo;
        }

        private (string dl_id, double remise2) tupple;

        private void BillingEngine_BeforeApplyPricingInfo(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeApplyPricingInfoEventArgs e)
        {
            if (e.FromChangeQ)
                tupple = (e.LignesVRecord.DL_ID, e.LignesVRecord.REMISE2);
        }

        private void BillingEngine_AfterApplyPricingInfo(object sender, MercatorUi.Engine.Gescom.BillingEngine.AfterApplyPricingInfoEventArgs e)
        {
            if (e.FromChangeQ && (tupple.dl_id == e.LignesVRecord.DL_ID))
                e.LignesVRecord.REMISE2 = tupple.remise2;
        }
    }
}


Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)