Overwegingen voor het importeren van e-facturen in commercieel beheer

0000003295     -      20-11-2025

In commercieel beheer een leveranciersfactuur het hoogtepunt van een documentenstroom die begint met bevoorrading, een of meer bestellingen en een of meer leveringen. De gebruikelijke processen van Mercator werken door de status van een document te verhogen. De ontvangst van een e-factuur, in essentie een einddocument, dat zichzelf vervangt als het einde van deze reeks getransformeerde documenten, doorbreekt dit concept.

👉 Mercator reageert op verschillende manieren.

1. Transformatie van voorafgaande bestellingen of leveringen

Wanneer een e-factuur wordt geïmporteerd, presenteert Mercator de lijst van bestellingen en leveringen verbonden aan de leverancier die aan deze factuur is gekoppeld.

eInvoice_staat_verhogen

Dit laat toe om leveringen of bestellingen te selecteren. Deze worden "verhoogd" naar factuurniveau, hun regels worden dan verwijderd en de factuur bevat de regels die uit de e-factuur zijn geïmporteerd. Het mechanisme voor nabestellingen (back-orders) wordt dan gebruikt om te bepalen welke regels in de originele documenten overblijven.

Zie ook: Kolommen toevoegen in eerdere documenten

 

2. Transformatie van eerdere bestellingen of leveringen met de modus "vergelijking"

Het nadeel van het hierboven beschreven mechanisme is dat sommige informatie in de bestellingen / leveringen, en die niet beschikbaar is in de e-factuur, verloren gaat en dus opnieuw moet worden ingevoerd. Dit kan het geval zijn voor loten, serienummers, locaties, enz.

Mercator maakt het hier mogelijk om de modus "vergelijking" te gebruiken op deze manier:

  • bestellingen / leveringen worden op de gebruikelijke manier verhoogd en blijven in de regels van de factuur die momenteel wordt bewerkt.
  • de inhoud van de e-factuur wordt in het vergelijkingsscherm geplaatst.

Deze modus wordt geactiveerd door een waarde te kiezen in dit dropdownmenu, dat alleen actief is als er een of meer bestellingen / leveringen zijn geselecteerd:

eInvoice_vergelijken

De beschikbare modi zijn gedocumenteerd op deze pagina.

De verwerking kan dan verdergaan met de vergelijkingsfuncties van Mercator.

 

3. Importeren met negeren van de artikelen die in het XML-bestand aanwezig zijn

Dit dropdownmenu bevat ook het element "Artikelen in het bericht negeren". Deze modus kan worden gebruikt wanneer één of meerdere bestellingen of leveringen werden geselecteerd. In dat geval zal de gegenereerde factuur exact overeenkomen met het resultaat van hun statustoename. Het tabblad "Artikelen" wordt uitgeschakeld. Er wordt geen enkele herkenning uitgevoerd van artikelen die in het XML-bestand voorkomen en er hoeft geen ontbrekend artikel te worden aangemaakt.

 

4. Importeren van de e-factuur in een klad

Als deze standaardmechanismen niet geschikt zijn, is het mogelijk om een aangepast systeem, gebaseerd op custom code uitbreidingen van de verschillende voorgaande documenten, op te zetten. Om een stabiel startpunt te hebben, stelt Mercator voor om de e-factuur te importeren in een klad. Op die manier is de e-factuur al beschikbaar als inhoud in Mercator-formaat, die gemakkelijker kan worden opgevolgd.

Wanneer de import gebeurt in een klad, worden de selectie van vorige documenten en de modus "vergelijking" gedeactiveerd.


Mogelijke acties via code op dit dialoogvenster

Het dialoogvenster waarnaar hier wordt verwezen is van het type MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport. Het heeft twee specifieke gebeurtenissen:

  • BeforeButtonOkClick : zodra op de knop OK wordt geklikt
  • AfterButtonOkClick : vlak voordat het venster wordt gesloten nadat op de knop OK is geklikt

Met deze twee events kan het proces worden onderbroken met e.Cancel = true;

De tweede event geeft ook e.DialogResult = System.Windows.Forms.DialogResult.Cancel door om het proces te annuleren en het venster te sluiten.

 

Voorbeeld van code: controleren van het bestemmingsjournaal

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;
using System.Windows.Forms;

// <CompileWithRoslyn />

namespace Gescom
{
    public class Customizer : MercatorUi.ICustomizers.IDialogLoadCustomizer, MercatorUi.ICustomizers.IDialogClosedCustomizer
    {
        public void DialogLoadCustomize(Form form)
        {
            if (form is MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport)
            {
                gescomAskEinvoiceImport.BeforeButtonOkClick += GescomAskEinvoiceImport_BeforeButtonOkClick;
            }
        }

        public void DialogClosedCustomize(Form form)
        {
            if (form is MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport)
            {
                gescomAskEinvoiceImport.BeforeButtonOkClick -= GescomAskEinvoiceImport_BeforeButtonOkClick;
            }
        }

        private void GescomAskEinvoiceImport_BeforeButtonOkClick(object sender, System.ComponentModel.CancelEventArgs e)
        {
            MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport = (MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport)sender;
            if (gescomAskEinvoiceImport.Sequenc.SelectedValue.ToString() == "FactF")
            {
                Dialogs.Stop("Dit journaal is niet toegelaten!");
                e.Cancel = true;
                return;
            }
        }
    }
}

 

Voorbeeld van code: als een of meer bestellingen / leveringen zijn aangevinkt, forceer de modus "vergelijking"

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;
using System.Windows.Forms;

// <CompileWithRoslyn />

namespace Gescom
{
    public class Customizer : MercatorUi.ICustomizers.IDialogLoadCustomizer, MercatorUi.ICustomizers.IDialogClosedCustomizer
    {
        public void DialogLoadCustomize(Form form)
        {
            if (form is MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport)
            {
                gescomAskEinvoiceImport.BeforeButtonOkClick += GescomAskEinvoiceImport_BeforeButtonOkClick;
            }
        }

        public void DialogClosedCustomize(Form form)
        {
            if (form is MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport)
            {
                gescomAskEinvoiceImport.BeforeButtonOkClick -= GescomAskEinvoiceImport_BeforeButtonOkClick;
            }
        }

        private void GescomAskEinvoiceImport_BeforeButtonOkClick(object sender, System.ComponentModel.CancelEventArgs e)
        {
            MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport gescomAskEinvoiceImport = (MercatorUi.Forms.Gescom.GescomDialogs.GescomAskEinvoiceImport)sender;
            if (gescomAskEinvoiceImport.ComboBoxCompareMode.Enabled)
                gescomAskEinvoiceImport.ComboBoxCompareMode.SelectedIndex = 1;
        }
    }
}


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)