Mercator permet de calculer des sous-totaux dans les ventes et les achats. Par défaut, les colonnes quantité et total sont prises en compte lors du calcul du sous-total. Ce sous-total prend en considération l'option SS_TOT_CUM qui permet de déterminer si les sous-totaux doivent être cumulés ou pas.
Le code ci-dessous montre comme totaliser une autre colonne numérique selon le même principe. L'exemple est donné pour LIGNES_V.TOT_NET_HT.
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;
}
}
}
}
}