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

In een document van het commercieel beheer, subtotalen berekenen op extra kolommen

0000003221     -      11-04-2024

Met Mercator kunt u subtotalen berekenen in verkopen en aankopen. Standaard wordt er rekening gehouden met de kolommen quantité en total bij het berekenen van het subtotaal. Dit subtotaal houdt rekening met de optie SS_TOT_CUM, die bepaalt of de subtotalen moeten worden opgeteld of niet.

De code hieronder laat zien hoe je een andere numerieke kolom kunt totaliseren volgens hetzelfde principe. Het voorbeeld wordt gegeven voor LIGNES_V.TOT_NET_HT.

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;
using MercatorUi.Engine.Gescom;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineClosed(BillingEngine billingEngine)
        {
            billingEngine.AfterUpdateAmounts += BillingEngine_AfterUpdateAmounts;
        }

        public void BillingEngineCreated(BillingEngine billingEngine)
        {
            billingEngine.AfterUpdateAmounts -= BillingEngine_AfterUpdateAmounts;
        }

        private void BillingEngine_AfterUpdateAmounts(object sender, BillingEngine.UpdateAmountsEventArgs e)
        {
            bool cumul = MercatorUi.Globals.Params["SS_TOT_CUM"] != "OUI";
            double tot_tot_net_ht = 0;
            foreach (var line in e.LignesVRecords)
            {
                if (line.SS_TOTAL)
                {
                    Api.SmartReplace(line.DataRow, "TOT_NET_HT", tot_tot_net_ht, 2);
                    if (!cumul)
                        tot_tot_net_ht = 0;
                }
                else
                {
                    tot_tot_net_ht += line.TOT_NET_HT;
                }
            }
        }
    }
}