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_V. La 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.
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;
}
}
}