Pas de inhoud van een bankbestand aan met code

0000002353     -      13-10-2026

De hier afgebeelde customizer laat zien hoe u de XML-inhoud van een bank-bestand kan wijzigen juist voor het gegenereerd wordt. Het geldt hier op de afschrijvingen, maar hetzelfde principe kan worden toegepast op overdrachten.

Bijvoorbeeld, het doel van de customizer is het vervangen van het PmtInfId element van het type

<PmtInfId>MERCATOR-F4F07B2F-C4AF-E1F3-4E</PmtInfId>

Door de laatstgenoemde:

<PmtInfId>M002566-F4F07B2F-C4AF-E1F3-4E</PmtInfId>
Dat wil zeggen door de referentie van het dossier, hetzij in dit voorbeeld 2566
 
De customizer buit het evenement BeforeCreateFile uit van de MercatorUi.Forms.Accounting.AccountingBankDomicilForm. Dit evenement passeert een BeforeCreateFileEventArgs, waarvan de Xml-eigenschap (dat een StringBuilder is) de inhoud van het Xml-bestand neemt.
 
Voor een verzoek tot overdracht moet AccountingBankDomicilForm vervangen worden door AccountingBankVirementForm.
 
De code van deze customizer is als volgt:
 
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;

// <CompileWithRoslyn />

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BaseFormCreating += Main_BaseFormCreating;
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BaseFormCreating -= Main_BaseFormCreating;
            }
        }

        void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
        {
            if (e.Form is MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm)
            {
                accountingBankDomicilForm.BeforeCreateFile += AccountingBankDomicilForm_BeforeCreateFile;
                accountingBankDomicilForm.FormClosed += AccountingBankDomicilForm_FormClosed;
            }
        }

        private void AccountingBankDomicilForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)sender;
            accountingBankDomicilForm.BeforeCreateFile -= AccountingBankDomicilForm_BeforeCreateFile;
            accountingBankDomicilForm.FormClosed -= AccountingBankDomicilForm_FormClosed;
        }

        void AccountingBankDomicilForm_BeforeCreateFile(object sender, MercatorUi.Forms.Accounting.AccountingBankDomicilForm.BeforeCreateFileEventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)sender;
            string reference = Api.JustStem(e.Fichier);
            e.Xml.Replace("<PmtInfId>MERCATOR-", "<PmtInfId>M" + Api.Right(reference, 7) + "-");
        }
    }
}

Zoals voor alle onderschepte events met een logic, beginnen ze bij (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen), Het is noodzakelijk om Mercator te herstarten op dat deze code gebruikt kan worden.

Waarschuwing: Deze code hoort zorgvuldig uitgevoerd te worden, omdat het de inhoud van het bankbestand verandert. In het ergste geval kan een programmeerfout doorgegeven worden aan de correct uitgevoerde bankbestanden, ondanks het feit dat het fouten bevat.


Gegroepeerde overschrijvingen

Standaard verstuurt Mercator de overschrijvingen binnen eenzelfde bestand als afzonderlijke overschrijvingen. Het is mogelijk om deze te groeperen tot één globale betaling. Dit kan nuttig zijn wanneer er maximumbedragen gekoppeld zijn aan verschillende handtekeningen. In dat geval kan men ervoor zorgen dat ofwel het volledige bestand wordt aanvaard, ofwel het volledige bestand wordt geweigerd. Hiervoor moet de tag BtchBookg op true worden ingesteld.

Zoom
void AccountingBankVirementForm_BeforeCreateFile(object sender, MercatorUi.Forms.Accounting.AccountingBankVirementForm.BeforeCreateFileEventArgs e)
{
    MercatorUi.Forms.Accounting.AccountingBankVirementForm accountingBankVirementForm = (MercatorUi.Forms.Accounting.AccountingBankVirementForm)sender;
    e.Xml.Replace("<BtchBookg>false", "<BtchBookg>true");
}


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)