Een formule uit de LinesEditor in een aparte assembly plaatsen

0000003281     -      24-03-2025

Mercator maakt het mogelijk om berekende expressies (formules) in kolommen van de Lineseditor te plaatsen. Wanneer een expressie complex wordt, kan het invoeren ervan in de kolomeigenschappen snel oncomfortabel worden. Als dezelfde formule in verschillende sequenties wordt gebruikt, moet ze telkens worden gedupliceerd, wat het onderhoud bemoeilijkt. 

Sinds versie 11.0.871 van MercatorUi.dll is het mogelijk om deze code in een gecompileerde assembly buiten Mercator te plaatsen. Deze assembly moet een statische klasse bevatten met een statische methode die overeenkomt met de gewenste formule. De assembly moet worden geplaatst in de hoofdmap van Mercator en vervolgens worden gerefereerd in de optie: "Ingave / Assembly voor kolomformules" (id = COMMON_DLL). (Enkel de naam van de dll en extensie, niet het pad ernaartoe).

Hieronder staat een voorbeeld van de code voor een dergelijke statische klasse. De berekening is eenvoudig: het retourneert de eenheidsprijs per lijn, verminderd met de korting op het totaal.

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);
        }
    }
}

De expressie voor de berekende kolom die de methode FormulaTest gebruikt, is als volgt:

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

Merk op dat de syntaxis van de formule bestaat uit:

  • NameSpace . Klasse . Methode
  • 3 parameters die corresponderen met 
    • de rastercel die de waarde zal ontvangen
    • de engine die momenteel in gebruik is
    • de dataRow van de huidige regel

De tweede parameter moet worden aangepast volgens het type scherm:

  • Voor een aankoop of verkoop in het commercieel beheer: MercatorUi.Engine.Gescom.BillingEngine billingEngine
  • Voor een boekhouding: MercatorUi.Engine.Cpta.BookingEngine bookingEngine
  • Voor een inventaris: MercatorUi.Engine.Gescom.InventoryEngine inventoryEngine
  • Voor een depotoverdracht : MercatorUi.Engine.Gescom.TransferEngine transferEngine

Met dit laatste punt moet rekening worden gehouden in zowel de formule als in de parameters van de statische methode.

 

Opmerkingen:

  • De statische klasse kan zich in een assembly bevinden die ook andere klassen bevat.
  • Parameters die niet worden gebruikt, kunnen worden verwijderd uit de statische methode en de expressie. In het bovenstaande voorbeeld wordt cel bijvoorbeeld niet gebruikt.

 

Trefwoorden : commonCode, formules



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)