Placer une formule du LinesEditor dans une assembly séparée

0000003281     -      24/03/2025

Mercator permet de placer des expressions calculées (formules) dans des colonnes du LinesEditor. Si l'expression devient complexe, la saisie dans les propriétés de colonnes peut rapidement devenir inconfortable. Si une même formule est utilisée dans diverses séquences, elle doit y être chaque fois dupliquée, ce qui peut rendre la maintenance plus ardue. 

Depuis la version 11.0.871 de MercatorUi.dll, il est possible de placer ce code dans une assembly compilée en dehors de Mercator. Elle devra contenir une classe statique avec une méthode statique correspondant à la formule souhaitée. Cet assembly doit se trouver dans le répertoire principal de Mercator et ensuite être référencée dans l'option "Encodage / Assembly pour formules de colonnes" (id = COMMON_DLL). (Uniquement le nom de la dll et son extension, pas le chemin d'accès).

Nous reprenons ci-dessous un exemple de code d'une telle classe statique. Le calcul effectué est rudimentaire : il renvoie le prix unitaire à la ligne, remise en pied déduite.

Zoom
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MercatorExtensions;

namespace TestCommon
{
    public static class Common
    {
        public static double FormulaTest(MercatorUi.GridPro.DataGridViewFormulaCell cell, MercatorUi.Engine.Gescom.BillingEngine billingEngine, DataRow dr)
        {
            MercatorDatabase.LIGNES_V ligne = new MercatorDatabase.LIGNES_V(dr);
            return Math.Round(ligne.PU * (1 - billingEngine.PiedsVRecord.RED_GEN_PC / 100), billingEngine.NDecPu);
        }
    }
}

L'expression de la colonne calculée exploitant la méthode FormulaTest est :

TestCommon.Common.FormulaTest(cell, billingEngine, dr)

Il faut noter que la syntaxe de la formule est composée de :

  • NameSpace . Classe . Méthode
  • 3 paramètres correspondants à 
    • la cellule de la grille qui va recevoir la valeur
    • l'engine en cours d'utilisation
    • la dataRow de la ligne en cours

Concernant le second paramètre, il doit être adapté en fonction du type d'écran :

  • Pour un achat ou une vente de la gestion commerciale : MercatorUi.Engine.Gescom.BillingEngine billingEngine
  • Pour une écriture comptable : MercatorUi.Engine.Cpta.BookingEngine bookingEngine
  • Pour un inventaire : MercatorUi.Engine.Gescom.InventoryEngine inventoryEngine
  • Pour un transfert de dépôt : MercatorUi.Engine.Gescom.TransferEngine transferEngine

Ce dernier point doit être pris en considération tant dans la formule que dans les paramètres de la méthode statique.

 

Notes :

  • La classe statique peut bien entendu se trouver une assembly contentant d'autres classes.
  • On peut retirer de la méthode statique et de l'expression les paramètres qui ne sont pas utilisés. Par exemple dans l'exemple ci-dessus, cell n'est pas utilisé.

 

Mots clés : commonCode, formules



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)