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 implementeert. Er wordt gebruikgemaakt van het weergeven van zoomknoppen (UserDefinedButtonColumnShowSigFou). De code wordt uitgevoerd bij het openen van de PeppolBox.
Om de kolom UserDefinedButtonColumnShowSigFou automatisch in de PeppolBox te laten verschijnen, moet men het toevoegen van vrije kolommen activeren.
De code is als volgt:
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
{
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();
}
}
}
}