Aide à l'envoi de commentaires dans les factures électroniques

0000003182     -      11/10/2023

Il est fréquent que des factures contiennent des commentaires dans leur contenu. Ceci sous la forme d'informations libres passées dans la colonne de désignation, avec ou sans article associé. Le format eInvoice prévoit une syntaxe spécifique pour envoyer ces commentaires dans le champ cbc:Note du document ou des lignes de factures.

Pour rappel, ce champ cbc.Note est optionnel, mais s'il est présent, il ne peut exister qu'une seul fois au même endroit.

Une pratique courante est de passer les commentaires sous la forme d'articles, avec une quantité à zéro, un prix nul et un taux de TVA de 0%. Nous ne pouvons que décourager cette façon de procéder puisqu'elle n'applique pas la norme eInvoice (BIS3 actuellement) dans le sens où elle a été conçue. Dans l'absolu, un destinataire de facture pourrait la refuser car elle contient un article non reconnu et ne faisant pas partie de la commande ou de la livraison avec laquelle il tente de rapprocher cette facture.

Mercator 11.0 ou ultérieur contient un mécanisme de gestion des commentaires qui permet de faciliter leur positionnement à l'endroit correct dans le document XML. Pour installer cette fonctionnalité, il faut ajouter la colonne EINVOICE_NOTE dans la table LIGNES_V et cette contrainte :

alter table LIGNES_V add EINVOICE_NOTE bit not null default 0
alter table LIGNES_V add constraint CHECK_EINVOICE_NOTE check (((einvoice_note=1) and (total=0)) or (einvoice_note=0))

 

Cette colonne supplémentaire permet d'indiquer à Mercator qu'une ligne où sa valeur est 1 (true) est un commentaire, que cette ligne soit associée à un article ou pas. Elle peut être populée manuellement en ajoutant une colonne dans le LinesEditor ou par code (par exemple dans BillingEngine.BeforeSave).

Le fonctionnement est le suivant :

  • Toutes les premières lignes situées en haut du document (à partir de la première) et pour lesquelles einvoice_note=1 sont considérées comme une note de document. Son contenu est placé dans cbc:Note sous l'élément racine Invoice ou CreditNote
  • Les lignes placées sous une ligne d'article (directement sous celle-ci) et pour lesquelles einvoice_note=1 sont considérées comme une note de ligne. Son contenu est placé dans cbc:Note de la cac:InvoiceLine ou cac:CreditNoteLine parente.
  • Les lignes d'articles pour lesquelles einvoice_note=1 doivent toujours avoir un total de ligne nul. Elles ne sont pas reprises en tant que InvoiceLine ou CreditNoteLine.
  • Les blocs de commentaires sont identifiés par la succession de lignes où einvoice_note=1. Dès que sur une ligne einvoice_note=0, Mercator considère que le bloc de commentaires est terminé. Les lignes "orphelines" (non situées en haut du document ou non contiguës à une ligne d'article sont ignorées).

 

Dans cet exemple, la facture au format XML contiendra 2 lignes (correspondant aux articles MFACT et MSHOP). Et les commentaires seront positionnés comme suit :

  1. Dans cbc:Note sous la racine Invoice
  2. Dans cac:InvoiceLine n°1, champ cbc:Note
  3. Dans cac:InvoiceLine n°2, champ cbc:Note

 

Remarque : par défaut, le champ PIEDS_V.NOTE1, s'il existe et est non vide, est placé dans le champ cbc:Note de la racine du document. Si tel est le cas, le contenu du bloc n°1 est simplement concaténé sous le contenu de NOTE1.