Envoi de factures électroniques par mail au format compatible Peppol

0000002719     -      10/09/2022

Etant donné les évolutions et les futures obligations, nous incitons nos utilisateurs à privilégier l'envoi de ces documents via le reséau Peppol et non par mail.


Mercator 10.1 ou ultérieur permet l'envoi, par simple mail, de factures de la gestion commerciale sous forme électronique au format

XML > UBL (Invoice/Credit Note) > EN16931 > BIS 3.0 Billing

Pour disposer de cette fonctionnalité, il faut ajouter une colonne C_EINVOICE1 char(30) dans la table CLI. Il convient ensuite de modifier la fiche client en y ajoutant un ComboBox qui utilise ce champ en tant que source. Mercator ajoute automatiquement cet élément dans le menu "Fichier" :

Ce menu permet d'envoyer une facture si les conditions suivantes sont remplies :

  • Le champ C_EINVOICE1 pour le client en cours contient BIS3 via Mail
  • La facture / note de crédit est déjà sauvegardée, et donc numérotée définitivement
  • Elle n'est pas en régime TVA comprise (le n° de TVA de la fiche client doit être complétée)
  • Elle ne contient pas de remise en pied
  • Un modèle d'impression permet la production d'au moins un duplicata PDF qui sera inclus dans le fichier XML
  • Le compte bancaire de l'émetteur est indiqué dans la zone "Banque" de "Outils \ Identification" sous la forme IBAN:BIC

Cette fonctionnalité génère le fichier XML correspondant à la facture électronique. Ce fichier est ajouté en tant que pièce jointe au mail qui sera préparé. Une version PDF de chaque copie sera aussi ajoutée.

 Si on souhaite envoyer automatiquement une facture électronique au départ de la validation d'une facture (ou d'une note de crédit), il faut installer l'OutputSelector, et y paramétrer au moins une copie ayant comme sortie "eInvoice".

En standard, Mercator produit un fichier conforme avec les normes reprises ci-dessus. Il offre, de base, ces possibilités :

  • Si le client de livraison est installé (ID_CLI_LIV) et s'il est différent du client de facturation, Mercator placera un bloc "cac:Delivery" avec cette adresse de livraison.
  • Pour une facture, le champ "Référence" est utilisé pour alimenter "cac:OrderReference" (puchase order no - n° de commande)
  • Pour une note de crédit, la référence est utilisée en tant que "cac:InvoiceDocumentReference", c'est-à-dire la référence de la facture sur laquelle porte la note de crédit.
  • Les régimes suivants sont reconnus : normal, exonéré, contractant et CEE et traités correctement en ce qui concerne l'information de TVA à transmettre.
  • Les différentes copies PDF mentionnées en tant que modèle dans la séquence sont incluses comme "cbc:EmbeddedDocumentBinaryObject". Il est obligatoire d'inclure au moins un fichier PDF.
  • Le VCS éventuellement associé à une facture est passé en tant que "cbc:InstructionID" et "cbc:PaymentID"
  • Les frais de port peuvent être mentionnés séparément en tant que "cac:AllowanceCharge" d'entête. Pour cela, il faut compléter l'option EINV_PORT avec le S_ID de l'article "Frais de port".
  • Un escompte déduit est aussi traité comme "cac:AllowanceCharge" d'en-tête.
  • Les remises à la ligne sont gérées en tant que "cac:AllowanceCharge" de ligne, en ce compris les remises optionnelles 2, 3 et 4
  • Les numéros de série et les numéros de lots sont pris en compte dans un bloc "cac:ItemInstance"

Il est essentiel de bien comprendre que tout le travail de personnalisation du document, habituellement effectué dans le modèle d'impression de la facture, devra aussi être fait dans le modèle électronique. Comme pour une facture imprimée, cela se fera dans la couche "paramétrage" de Mercator. Pour cela, le BillingEngine met à disposition 3 événements :

  • EinvNodeAdding : lors de l'ajout de chaque nœud dans la structure XML. En mettant e.Cancel = true, on a la possibilité de ne pas ajouter le nœud
  • EinvNodeAdded : quand le noeud vient d'être ajouté à l’arborescence XML
  • EinvFileCreating : lorsque toute l’arborescence XML est prête, juste avant de produire le fichier XML. La propriété e.FileName permet de modifier le nom du fichier qui va être produit.

Nous reprenons sur cette page des exemples de paramétrage.


eFFF (forum for the future) est une sous-norme belgo-belge qui est obsolète et qui n'a pas de raison d'exister parmi des normes quasi mondiales.

BE eFFF 30 via Mail ne doit donc plus être utilisé.


Si on souhaite personnaliser, par exemple, le texte du mail, il suffit d'appliquer ce customizer :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;


namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.BeforeSendMail += new MercatorUi.Engine.Gescom.BillingEngine.BeforeSendMailEventHandler(BillingEngine_BeforeSendMail);
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.BeforeSendMail -= new MercatorUi.Engine.Gescom.BillingEngine.BeforeSendMailEventHandler(BillingEngine_BeforeSendMail);
        }

        void BillingEngine_BeforeSendMail(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSendMailEventArgs e)
        {
            if (e.Context == MercatorUi.Engine.Gescom.BillingEngine.BeforeSendMailEventArgs.ContextEnum.eInvoice)
            {
                e.Content = "Vous trouverez dans ce mail notre facture au format électronique (eFFF). Vous pouvez l'importer facilement dans votre logiciel comptable.";
            }
        }


    }
}