U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

De inhoud van de PeppolBox filteren op basis van een keuzelijst die verschillende ontvangende vennootschappen weergeeft

0000003416     -      30-12-2025

De hierboven beschreven code maakt het mogelijk om de inhoud van de PeppolBox te filteren om berichten te verbergen op basis van het PeppolId van de bestemmeling. Deze oplossing is bijzonder geschikt voor configuraties waarbij éénzelfde PeppolBox berichten ontvangt voor verschillende vennootschappen. De code is gebaseerd op een PeppolBox-customizer die de interface MercatorUi.ICustomizers.IPeppolBoxHelperCreated implementeert. Bovenaan de PeppolBox wordt een keuzelijst geplaatst waarmee men de vennootschap kan selecteren waarvoor men de berichten wenst te bekijken.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;
using System.Xml;
using MercatorUi.Forms.Other.OtherClasses;

// <CompileWithRoslyn />

namespace PeppolBox
{
    public class Customizer : MercatorUi.ICustomizers.IPeppolBoxHelperCreated, MercatorUi.ICustomizers.IPeppolBoxHelperClosed
    {
        private MercatorUi._BaseClasses.ComboBoxExReadOnly comboFilter;

        public void PeppolBoxHelperCreated(PeppolBoxHelper peppolBoxHelper)
        {
            peppolBoxHelper.Downloading += PeppolBoxHelper_Downloading;
            if (peppolBoxHelper.PeppolBoxForm != null)
            {
                List<MercatorUi._BaseClasses.MercatorComboItem> l = new List<MercatorUi._BaseClasses.MercatorComboItem>
                {
                    new MercatorUi._BaseClasses.MercatorComboItem("Company A", "25789360"),
                    new MercatorUi._BaseClasses.MercatorComboItem("Company B", "0453917339"),
                };
                comboFilter = new MercatorUi._BaseClasses.ComboBoxExReadOnly
                {
                    DisplayMember = "Description",
                    ValueMember = "Id",
                    DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed,
                    DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList,
                    FormattingEnabled = true,
                    ItemHeight = 14,
                    Location = new System.Drawing.Point(10, 5),
                    Name = "comboFilter",
                    Size = new System.Drawing.Size(100, 20),
                    Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled,
                    TabIndex = 0,
                    Tag = peppolBoxHelper
                };
                comboFilter.DataSource = l;
                comboFilter.SelectedValueChanged += ComboFilter_SelectedValueChanged;

                peppolBoxHelper.PeppolBoxForm.DrawLineBelowCaption = true;
                peppolBoxHelper.PeppolBoxForm.PanelTop.Height = 30;
                peppolBoxHelper.PeppolBoxForm.PanelTop.Visible = true;
                peppolBoxHelper.PeppolBoxForm.PanelTop.Controls.Add(comboFilter);
            }
            FilterMessages(peppolBoxHelper);
        }

        public void PeppolBoxHelperClosed(PeppolBoxHelper peppolBoxHelper)
        {
            peppolBoxHelper.Downloading -= PeppolBoxHelper_Downloading;
            if (comboFilter != null)
            {
                comboFilter.SelectedValueChanged -= ComboFilter_SelectedValueChanged;
                comboFilter.Dispose();
            }
        }

        private void ComboFilter_SelectedValueChanged(object sender, EventArgs e)
        {
            PeppolBoxHelper peppolBoxHelper = (PeppolBoxHelper)comboFilter.Tag;
            FilterMessages(peppolBoxHelper);
        }

        private void PeppolBoxHelper_Downloading(object sender, PeppolBoxHelper.DownloadingEventArgs e)
        {
            PeppolBoxHelper peppolBoxHelper = (PeppolBoxHelper)sender;
            FilterMessages(peppolBoxHelper);
        }

        private bool filterApplied;

        private void FilterMessages(PeppolBoxHelper peppolBoxHelper)
        {
            if (comboFilter?.SelectedValue != null)
            {
                if (filterApplied)
                {
                    peppolBoxHelper.Messages.RestoreAllMessages();
                    filterApplied = false;
                }
                foreach (PeppolBoxHelper.PeppolMessage message in peppolBoxHelper.Messages.Where(m => !string.IsNullOrEmpty(m.PeppolId)).ToArray())
                {
                    if (!message.PeppolId.Contains(comboFilter.SelectedValue.ToString()))
                    {
                        peppolBoxHelper.Messages.Remove(message);
                        filterApplied = true;
                    }
                }
            }
        }
    }
}

 

Merk op dat in de keuzelijst de cijfers van het BTW-nummer als ID worden gebruikt. Dit maakt het mogelijk om via de onderstaande syntaxis zowel het prefix 9925: als 0208: in de filter op te nemen:

message.PeppolId.Contains(comboFilter.SelectedValue.ToString())



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)