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:
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;
}
}
}