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

Commande SQL dans transaction de sauvegarde d'un document de la gestion commerciale

0000002547     -      21/06/2016

Il faut pour cela utiliser la propriété CommandForFinalTransaction du BillingEngine, qui est une System.Data.SqlClient.SqlCommand.
Dans la transaction de sauvegarde, si la propriété CommandForFinalTransaction est non "null", alors Mercator l'exécute tout simplement, en ayant soin de compléter automatiquement les propriétés Connection et Transaction. (qu'il ne faut donc pas compléter soi-même).
De surcroît, Mercator passe automatiquement les paramètres @id, @journal et @piece qui vont permettre de savoir quel document que l'on valide.

Donc, ce code fonctionnera facilement :
 
billingEngine.CommandForFinalTransaction = new System.Data.SqlClient.SqlCommand("update pieds_v set ... where (id=@id) and (journal=@journal) and (piece=@piece)");
 
Ci-dessous un exemple de customizer pour une séquence de la gestion commerciale :
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)");
        }

    }
}
 

Bonjour,

Nous souhaitons exécuter une requête SQL propre à notre projet, dans la transaction SQL de sauvegarde d'un document de la gestion commerciale. Ceci afin de s'assurer que cette requête est bien exécutée lors de la sauvegarde, et bien rollbackée si la sauvegarde ne peut être effectuée. Comment procéder ?