Gérer les références vides lors de l'envoi d'une facture via Peppol

0000003323     -      31/12/2025

La norme Peppol ne permet pas d'envoyer une facture électronique sans que l'une de ces deux zones ne soit complétée :

  • cbc:BuyerReference (référence acheteur)
  • cac:OrderReference/cbc:ID (référence de commande)

Par défaut, Mercator complète la référence de commande avec la référence du pied de document (PIEDS_V.REFERENCE). En conséquence, ce champ ne peut être vide. Un contrôle à ce propos est en place après la génération du document XML et avant l'envoi dans le réseau Peppol.

Mercator apporte ces deux méthodes pour ne pas contraindre l'utilisateur à encoder manuellement une référence.

 

Solution codeless

Dans la séquence de factures concernée, il faut se rendre dans l'onglet "Formules" et indiquer une expression dans "Référence Peppol". Cette expression peut utiliser toutes les colonnes de la table PIEDS_VLa syntaxe est celle des DataColumns calculées de .net. Cette page donne quelques indications concernant les syntaxes possibles.

Par exemple : journal + ' ' + piece

⚠️ Cette formule n'est utilisée que si la référence est vide.

 

✅ Solution avec code personnalisé

Il est possible, lors de la génération du fichier, de fixer la valeur de Reference par ce code. Dans l'exemple ci-dessous, si la référence est vide, on la remplace par journal + n° de facture. Sinon, elle demeure inchangée.

Zoom
namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeEinvoiceExport += BillingEngine_BeforeEinvoiceExport;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeEinvoiceExport -= BillingEngine_BeforeEinvoiceExport;
        }

        void BillingEngine_BeforeEinvoiceExport(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeEinvoiceExportEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            if (string.IsNullOrWhiteSpace(e.Reference))
                e.Reference = billingEngine.PiedsVRecord.JOURNAL + " " + billingEngine.PiedsVRecord.PIECE;
        }
    }
}


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)