Voeg een zoomknop toe aan de leverancier in de PeppolBox

0000003283     -      07-04-2025

De onderstaande code toont hoe een kolom kan worden toegevoegd in de PeppolBox met een knop waarmee ingezoomd kan worden naar de fiche van de leverancier die overeenkomt met deze factuur / creditnota. De code is gebaseerd op een customizer van de PeppolBox die de interface MercatorUi.ICustomizers.IPeppolBoxHelperCreated en IPeppolBoxHelperClosed implementeert. Er wordt gebruikgemaakt van het weergeven van zoomknoppen (UserDefinedButtonColumnShowSigFou). De code wordt uitgevoerd bij het openen van de PeppolBox.

De code is als volgt:

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;

// <CompileWithRoslyn />

namespace PeppolBox
{
    public class Customizer : MercatorUi.ICustomizers.IPeppolBoxHelperCreated, MercatorUi.ICustomizers.IPeppolBoxHelperClosed
    {
        public void PeppolBoxHelperCreated(MercatorUi.Forms.Other.OtherClasses.PeppolBoxHelper peppolBoxHelper)
        {
            peppolBoxHelper.DataTable.Columns.Add("UserDefinedButtonColumnShowSigFou", typeof(string));

            foreach (var message in peppolBoxHelper.Messages.Where(m => m.IsInvoiceOrCreditNote).ToArray())
            {
                var parsedContent = message.ReceivedDoc.ParseContent(Globals.Langue, MercatorPeppol.ReceivedDoc.ParseContentEnum.WithSupplierName);
                if (!string.IsNullOrEmpty(parsedContent.Error))
                    continue;  // onmogelijk om het bericht te lezen

                XmlNode nodeNumTva = parsedContent.XmlSelectNodes("cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID").FirstOrDefault();
                if (string.IsNullOrEmpty(nodeNumTva?.InnerText))
                    continue; // het bericht bevat niet het BTW-nummer van de leverancier

                List<string> fou = Api.Zselect<string>(Globals.RepData, "select f_id from FOU where f_num_tva=@num_tva", new MercatorSqlParam("@num_tva", nodeNumTva.InnerText, SqlDbType.Char));
                if ((fou == null) || !fou.Any())
                    continue; // SQL-fout of leverancier niet gevonden

                message.DataRow["UserDefinedButtonColumnShowSigFou"] = fou.First();
            }

            peppolBoxHelper.PeppolBoxForm.Grid.StandardColumnsCreated += Grid_StandardColumnsCreated;
        }

        public void PeppolBoxHelperClosed(MercatorUi.Forms.Other.OtherClasses.PeppolBoxHelper peppolBoxHelper)
        {
            peppolBoxHelper.PeppolBoxForm.Grid.StandardColumnsCreated -= Grid_StandardColumnsCreated;
        }

        private void Grid_StandardColumnsCreated(object sender, EventArgs e)
        {
            MercatorUi.GridPro.DataGridViewXPro grid = (MercatorUi.GridPro.DataGridViewXPro)sender;
            MercatorUi.Forms.Other.PeppolBoxForm peppolBoxForm = (MercatorUi.Forms.Other.PeppolBoxForm)grid.FindForm();
            grid.AddColumn(peppolBoxForm.DataTable.Columns["UserDefinedButtonColumnShowSigFou"], "Fou", columnWidth: 35);
        }
    }
}


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)