Bij het importeren van een Peppol-factuur de automatisch herkende artikels aanpassen

0000003330     -      16-09-2025

De onderstaande code toont hoe een artikel kan worden gewijzigd dat door Mercator automatisch geïdentificeerd werd tijdens het importeren van een eInvoice. Het is namelijk mogelijk dat aanvullende informatie niet door Mercator in rekening wordt gebracht om het artikel nauwkeuriger te identificeren. Bijvoorbeeld: een leverancier kan vrije gegevens vermelden in de zone cac:AdditionalItemProperty van een artikelregel cac:Item.

Via het event ReplacingItem van het importdialoogvenster in commercieel beheer MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport, is het mogelijk een ander artikel te specificeren via de methode e.ReplaceItem().

Dit betreft de import in commercieel beheer.

De code ziet er als volgt uit:

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.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.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport)
            {
                gescomAskEinvoiceImport.ReplacingItem += GescomAskEinvoiceImport_ReplacingItem;
                gescomAskEinvoiceImport.Disposed += GescomAskEinvoiceImport_Disposed;
            }
        }

        private void GescomAskEinvoiceImport_ReplacingItem(object sender, MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport.ReplacingItemEventArgs e)
        {
            var nodes = e.ItemXmlNode.SelectNodes("cac:Item/cac:SellersItemIdentification/cbc:ID", e.XmlNamespaceManager);
            if ((nodes.Count > 0) && (nodes[0].InnerText == "DDUC42RVV1"))
            {
                e.ReplaceItem("nieuw s_id");
                if (!string.IsNullOrEmpty(e.ErrorWhenReplacingItem))
                    Dialogs.Stop("Fout tijdens het vervangen van het artikel: " + e.ErrorWhenReplacingItem);
            }
        }

        private void GescomAskEinvoiceImport_Disposed(object sender, EventArgs e)
        {
            MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport = (MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport)sender;
            gescomAskEinvoiceImport.ReplacingItem -= GescomAskEinvoiceImport_ReplacingItem;
            gescomAskEinvoiceImport.Disposed -= GescomAskEinvoiceImport_Disposed;
        }
    }
}


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)