Lors de l'import d'une facture Peppol modifier les articles reconnus automatiquement

0000003330     -      16/09/2025

Le code décrit ci-dessous montre comment modifier un article identifié automatiquement par Mercator lors de l'import d'une eInvoice. Il est en effet possible que des informations complémentaires ne soient pas prises en compte par Mercator afin d'identifier plus finement l'article. Par exemple, un fournisseur peut mentionner des données libres dans la zone cac:AdditionalItemProperty d'une ligne d'article cac:Item.

Via l'événement ReplacingItem de la boîte de dialogue d'import en gestion en commerciale MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport, il est possible de spécifier un autre article via la méthode e.ReplaceItem().

Ceci concerne l'import en gestion commerciale.

Le code s'établit comme suit :

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("nouveau s_id");
                if (!string.IsNullOrEmpty(e.ErrorWhenReplacingItem))
                    Dialogs.Stop("Erreur durant le remplacement de l'article : " + 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;
        }
    }
}


Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)