U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Hoe kunnen berichten van de PeppolBox van de ene Mercator naar die van een andere Mercator worden overgedragen?

0000003297     -      10-02-2026

De onderstaande configuratie toont hoe u in de Peppol Box een knop kunt toevoegen waarmee een bericht kan worden overgedragen naar een andere Mercator waarvan de database zich op dezelfde SQL-server bevindt.

Ga naar "Tools / Setup / Rasters-Customizers" en selecteer in de keuzelijst PeppolBox. 

  • Vink AutoAddCustomColumns aan
  • Plaats deze StringUpdater : 
    • links : as isnew
    • rechts : as isnew,'TransferPeppolMessage' as UserDefinedButtonColumnCustom
  • Voeg daarna een kolomregel toe in de eigenschap CustomRules:
    • Name : UserDefinedButtonColumnCustom
    • Width : 80
    • ButtonText :Overdragen

En plaats ten slotte deze code in de customizer PeppolBox:

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;

// <CompileWithRoslyn />

namespace PeppolBox
{
    public class Customizer
    {
        public void TransferPeppolMessage(MercatorUi.GridPro.DataGridViewXPro grid, System.Windows.Forms.DataGridViewCellEventArgs e)
        {
            MercatorUi.Forms.Other.PeppolBoxForm peppolBoxForm = (MercatorUi.Forms.Other.PeppolBoxForm)grid.FindForm();
            Guid guid = (Guid)grid.Rows[e.RowIndex].Cells["id"].Value;

            // Lijst die de verschillende vennootschappen bevat waarnaar het Peppol-bericht kan worden overgedragen. De tweede parameter is de naam van de database.
            List<MercatorUi._BaseClasses.MercatorComboItem> l = new List<MercatorUi._BaseClasses.MercatorComboItem>
            {
                new MercatorUi._BaseClasses.MercatorComboItem("Company sa""MERCATORFIDUDEPEND"),
                new MercatorUi._BaseClasses.MercatorComboItem("Company srl""MERCATORXYZ")
            };

            MercatorUi._Dialogs.DialogAskComboRet r = Dialogs.AskCombo("Transférer le message Peppol vers quel dossier ?", l, "Id");
            if (r == null)
                return;

            string reqSql = $@"
                declare @sql nvarchar(MAX) = replace(replace(replace(dbo.LIST_COLUMNS('PEPPPOL_RECEIVED_MESSSAGES'),'dbo.',''),',IMPORTED_IN',''),',XML_CONTENT','')
                set @sql = 'insert into {r.Id}.dbo.PEPPPOL_RECEIVED_MESSSAGES (' + @sql + ') select ' + @sql + ' from PEPPPOL_RECEIVED_MESSSAGES where id=@id'
                EXECUTE sp_executesql @sql, N'@id UNIQUEIDENTIFIER', @id = @id
                delete from PEPPPOL_RECEIVED_MESSSAGES where id=@id".UnIndent(4);

            using (MercatorSqlConnection conn = new MercatorSqlConnection(Globals.RepData, true))
            {
                if (!conn.IsConnected)
                    return;
                using (MercatorSqlCommand cmd = new MercatorSqlCommand(reqSql, conn))
                {
                    cmd.Parameters.AddWithValue("@id", guid);
                    if (!Api.SqlExec(conncmdunderTransactiontrue))
                        return;
                    grid.CurrentCell = null;
                    DataRow dataRowToRemove = peppolBoxForm.DataTable.RowsEnumerable().First(dr => dr["id"].Equals(guid));
                    peppolBoxForm.DataTable.Rows.Remove(dataRowToRemove);
                }
            }
        }
    }
}

Deze code vereist een export van de toegangsrechten. (Via "Tools / Geavanceerd tools / SQL Database / Toegangsrechten exporteren" van de Mercator waar deze code geplaatst is).

De tabellen PEPPOL_RECEIVED_MESSAGES van de verschillende Mercators moeten identieke kolommen bevatten.



Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)