Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Peppol : gestion des accusés de réception d'envoi

0000003439     -      03/03/2026

Après chaque envoi dans le réseau Peppol effectué avec succès, Mercator va recevoir du réseau un accusé de réception (ACK). Ceci concerne les factures et notes de crédit émise, ainsi que les réponses sur factures envoyées.

Dans une configuration classique, ces accusés de réception ne sont pas visibles dans la PeppolBox. Ceci afin de ne pas la surcharger. En effet, après l'envoi de plusieurs centaines de factures clients, c'est autant d'accusés de réception qui sont attendu. Lors de la réception de ces accusés de réception dans la PeppolBox, Mercator va tenter de les archiver automatiquement. Si l'archivage automatique n'a pu être réalisé, il est possible de l'effectuer via le bouton "G"' de la PeppolBox.

👉 Les accusés de réception sur factures émise sont stockés comme une réponse sur facture. Dans la grille, ils se distinguent par un pictogramme présentant un bouclier incluant le symbole "validé". Le bouton "zoom" permet de voir le contenu de l'accusé.

👉 Les accusés de réception sur réponses émises sont associés à cette réponse. Dès que cette association a été effectuée, un bouton supplémentaire est visible dans le bas de la réponse : "Ouvrir accusé de réception".

 

✅ Ce ACK est une preuve technique de transport entre points d'accès. Il prouve :

  • que le message était techniquement correct;
  • que le message transmis n'a pas été modifié;
  • qu'il a bien été remise au point d'accès Peppol du destinataire.

❌ Ce qu'il ne prouve pas :

  • que la facture a été acceptée;
  • que la facture est comptabilisée;
  • que la facture est juridiquement valide;
  • que la facture est arrivée dans l’ERP du client.

Les requêtes permettant l'archivage peut être modifiée via un customizer PeppolBox qui implémente l'interface IStringUpdater ou IStringUpdaterWidhtContextInfo. Etant donné que les requêtes SQL peuvent être difficiles à capter, nous les reprenons ci-dessous :

Reconnaissance d'un ACK sur facture - note de crédit

select top 1 id,journal,piece,cli.c_nom as nom from PIEDS_V (NOLOCK) inner join CLI (NOLOCK) on (cli.c_id=pieds_v.id_cli) where (type=1) and (date>@date_min) and (PEPPOL_RESPONSE like '<Digiteal>{{\"Id\":\"{id}%')
<ID>PEPPOLBOX_TRANSPORT_ACK_FINDSOURCE</ID>

Reconnaissance d'un ACK sur self-billing

select top 1 id,journal,piece,fou.f_nom as nom from PIEDS_A (NOLOCK) inner join FOU (NOLOCK) on (fou.f_id=pieds_a.id_fou) where (type=1) and (date>@date_min) and (PEPPOL_RESPONSE like '<Digiteal>{{\"Id\":\"{id}%')
<ID>PEPPOLBOX_TRANSPORT_ACK_FINDSOURCE</ID>

Reconnaissance d'un ACK sur InvoiceReponse

if exists (select * from PEPPPOL_INVOICERESPONSES_SENT where id_ubl=@id_ubl) select cast(1 as bit) as ret else select cast(0 as bit) as ret
/*<ID>PEPPOLBOX_SEARCH_INVOICERESPONSE_SENT</ID>*/

Archivage d'un ACK sur facture - note de crédit

insert into PEPPPOL_INVOICERESPONSES_RECEIVED (id,moment,id_doc,journal_doc,piece_doc,peppol_id_from,peppol_id_to,info,content,is_ack)
    select id,moment,id_doc,journal_doc,piece_doc,peppol_id_from,peppol_id_to,info,content,1 from #PEPPPOL_INVOICERESPONSES_RECEIVED_TMP t
    where not exists(select * from PEPPPOL_INVOICERESPONSES_RECEIVED where id=t.id)
drop table #PEPPPOL_INVOICERESPONSES_RECEIVED_TMP
/*<ID>PEPPOLBOX_NEW_ACK_ON_INVOICE</ID>*/

Archivage d'un ACK sur InvoiceResponse

update PEPPPOL_INVOICERESPONSES_SENT set ack=t.ack from #PEPPPOL_INVOICERESPONSES_SENT_TMP t where (t.id_ubl=pepppol_invoiceresponses_sent.id_ubl)
drop table #PEPPPOL_INVOICERESPONSES_SENT_TMP
/*<ID>PEPPOLBOX_NEW_ACK_ON_RESPONSE</ID>*/

 

Ci-dessous un exemple de customizer qui exploite ces possibilités de modifications de requêtes SQL. Il répond au cas métier suivant : la PeppolBox se trouve dans une comptabilité autonome et les accusés de réception doivent être envoyés dans la gestion commerciale, qui a pour base de données MERCATORXXXXXX. (Ce customizer est placé dans le Mercator de la comptabilité autonome.)

Zoom
namespace PeppolBox
{
    public class Customizer : MercatorUi.ICustomizers.IStringUpdater
    {
        public string StringUpdate(string s)
        {
            s = s.Replace("from PEPPPOL_INVOICERESPONSES_RECEIVED where", "from MERCATORXXXXXX.dbo.PEPPPOL_INVOICERESPONSES_RECEIVED where")
                 .Replace("into PEPPPOL_INVOICERESPONSES_RECEIVED ", "into MERCATORXXXXXX.dbo.PEPPPOL_INVOICERESPONSES_RECEIVED ");
            string id = Api.StrExtract(s, "<ID>", "</ID>");
            if (id == "PEPPOLBOX_TRANSPORT_ACK_FINDSOURCE")
                s = s.Replace("PIEDS_V (NOLOCK)", "MERCATORXXXXXX.dbo.PIEDS_V (NOLOCK) pieds_v");
            return s;
        }
    }
}


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)