MercatorPenguin en customizers op de ingaveschermen

0000003448     -      03-06-2026

MercatorPenguin laat toe om maatwerk code toe te passen op alle ingaveschermen: 

  • informatiebestanden,
  • verkopen en aankopen,
  • picking,
  • inventarissen,
  • overdrachten tussen depots,
  • CRM-acties.

Dit biedt een interessant alternatief voor CustomPage in de mate dat het scherm voor het grootste deel zonder code samengesteld kan worden, via de parametrering in Mercator. En vervolgens wordt het custom gedeelte, soms een eenvoudige knop, soms een eenvoudige berekende uitdrukking of een bijkomende validatie, via deze customizer geïmplementeerd.

Deze customizers vereisen de Core-versie van MercatorPenguinServer. Indien nodig, moet de klassieke versie van MercatorPenguinServer vervangen worden door de Core-versie en moet de Mercator die eraan gekoppeld is geüpgraded worden naar de Core-versie.

 

1. Voorbereiding van het project

Een dergelijke customizer moet gebouwd worden in een platform overschrijdende klassenbibliotheek (class library) voor Android en iOS. Het project moet een verwijzing hebben naar MercatorTunnel onder Android en een andere verwijzing naar MercatorTunnel onder iOS (te plaatsen in afzonderlijke mappen). Deze verschillende versies zijn downloadbaar via deze pagina.

Het standaardproject zal als volgt samengesteld zijn:

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
    <TargetFrameworks>net10.0-android;net10.0-ios</TargetFrameworks>
    <UseMaui>true</UseMaui>
    <SingleProject>true</SingleProject>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
    <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>
    <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Maui.Controls" Version="$(MicrosoftMauiControlsVersion)" />
    <PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MicrosoftMauiControlsVersion)" />
    <PackageReference Include="BarcodeScanning.Native.Maui" Version="$(BarcodeScanningNativeMauiVersion)" />
    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'net10.0-android'">
    <Reference Include="MercatorTunnel">
      <HintPath>...\net10.0-android\MercatorTunnel.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'net10.0-ios'">
    <Reference Include="MercatorTunnel">
      <HintPath>...\net10.0-ios\MercatorTunnel.dll</HintPath>
    </Reference>
  </ItemGroup>
</Project>

In dit project moeten de variabelen in de vorm $(MicrosoftMauiControlsVersion) vervangen worden door de huidige versie van elke nuget. Deze versies zijn leesbaar in MercatorPenguin, via het informatiescherm (link onderaan het scherm).

 

2. Aanmaken van de customizer

Een customizer is een klasse die overerft van een BaseEditCustomizer die eigen is aan elk type ingavescherm:

  • informatiebestanden : MercatorPenguin.EditCustomizers.BaseEditSigCustomizer
  • verkopen en aankopen : MercatorPenguin.EditCustomizers.BaseEditBillingCustomizer
  • picking : MercatorPenguin.EditCustomizers.BaseEditPickingCustomizer
  • inventarissen : MercatorPenguin.EditCustomizers.BaseEditInventoryCustomizer
  • overdrachten tussen depots : MercatorPenguin.EditCustomizers.BaseEditTransferCustomizer
  • acties : MercatorPenguin.EditCustomizers.BaseEditActionCustomizer

De constructor van de customizer moet altijd in deze vorm geschreven worden. Dit laat toe om de door MercatorPenguin doorgegeven parameters aan de bovenliggende klasse door te geven.

 

public CustomizerPicking(ConstructorParams constructorParams) :
	base(constructorParams)
{ }

 

De toegangspunten in de code van MercatorPenguin zijn beschikbaar in de vorm van verschillende overridable methoden die eigen zijn aan elke basisklasse.
💡 In deze basisklasse bevatten deze methoden geen code. Het is daarom nooit nodig om base. gevolgd door de naam van de methode op te roepen.

Intellisense laat toe om deze beschikbare methoden te ontdekken. Wij raden ook aan om de hieronder vermelde voorbeelden te raadplegen, die de geïmplementeerde code tonen. Deze methoden bestaan telkens in een synchrone en asynchrone (async) versie.

👉 Merk echter op dat deze voorbeelden niet exhaustief zijn. Code die in een voorbeeld getoond wordt, werkt waarschijnlijk ook in een ander type scherm.

 

3. Beschikbaar stellen van de assemblies voor MercatorPenguin

Bij de compilatie van het hierboven vermelde project produceert Mercator twee afzonderlijke bin-mappen, één voor Android en één voor iOS. De assembly die overeenkomt met dit project moet voor elk platform gelokaliseerd worden in het tabblad "Assemblies" van het parametreringsvenster van het betrokken MercatorPenguin-scherm. Deze bin-map bevat een aanzienlijk aantal DLL's. Enkel de DLL die overeenkomt met het project moet in de database van Mercator geplaatst worden. De andere DLL's maken al deel uit van MercatorPenguin. De DLL kan via drag & drop in het overeenkomstige kader geplaatst worden of geselecteerd worden via de bijhorende knop.

penguin_customizers_nl

⚠️ Het is niet mogelijk om DLL's als referentie door te geven. Indien nodig, moeten ze opgenomen worden in de basis-DLL, bijvoorbeeld via obfuscatie.



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)