SQL-commando in transactie bij het bewaren van een document uit het commercieel beheer.

0000002547     -      21-06-2016

Men moet hiervoor de property CommandForFinalTransaction van de BillingEngine gebruiken, dat is een System.Data.SqlClient.SqlCommand.
In de transactie van het bewaren, indien de property CommandForFinalTransaction niet "null" is, werkt Mercator gewoon verder. Mercator zorgt ervoor dat de properties Connection en Transaction automatisch afgerond worden. (Zo moet hij dit zelf niet aanvullen)
Bovendien verandert Mercator automatisch de instellingen @id, @journal et @piece hierdoor weten we welk document geldig is.

Dus, werkt deze code eenvoudig:
 
billingEngine.CommandForFinalTransaction = new System.Data.SqlClient.SqlCommand("update pieds_v set ... where (id=@id) and (journal=@journal) and (piece=@piece)");
 
Hieronder een customizer voorbeeld voor een sequentie uit het commercieel beheer:
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.DuringSave += new MercatorUi.Engine.Gescom.BillingEngine.DuringSaveEventHandler(BillingEngine_DuringSave);
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.DuringSave -= new MercatorUi.Engine.Gescom.BillingEngine.DuringSaveEventHandler(BillingEngine_DuringSave);
        }

        void BillingEngine_DuringSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.DuringSaveEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine BillingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            BillingEngine.CommandForFinalTransaction = new System.Data.SqlClient.SqlCommand("update pieds_v set reference=rtrim(reference)+'*' where (id=@id) and (journal=@journal) and (piece=@piece)");
        }

    }
}
 

Goeiedag,

Wij wensen een SQL-query uit te voeren in ons project, in de SQL-transactie van het opgeslagen document. Dit om te verzekeren dat de query zal uitgevoerd worden bij het bewaren, en goed teruggegeven indien het bewaren niet uitgevoerd is. Hoe moeten we verder?