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

Dans une écriture comptable, confirmer la sélection du compte et placer son libellé dans le champ commentaire

0000002035     -      26/08/2017

Cette programmation montre comment intervenir sur la sélection du compte général (sur chaque ligne) dans une écriture comptable. Elle présente simplement une boîte de dialogue permettant de confirmer ou d'annuler la sélection du compte général. Si le compte est accepté, son libellé est placé dans la zone "commentaire" de cette même ligne. Ce customizer est fait pour l'exemple et sera le point de départ de programmations plus ambitieuses.

Le code doit être placé dans un customizer Booking créé à partir de la séquence comptable correspondante. Il implémente les interfaces suivantes :

Il exploite essentiellement l'évènement BeforeInsertAccount du BookingEngine de l'écriture en cours. Cet évènement permet une annulation de la poursuite de la procédure.

Le code s'établit comme suit :

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;

namespace Booking
{
    public class Customizer : MercatorUi.ICustomizers.IBookingEngineCreated, MercatorUi.ICustomizers.IBookingEngineClosed
    {
        public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            BookingEngine.BeforeInsertAccount += BookingEngine_BeforeInsertAccount;
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            BookingEngine.BeforeInsertAccount -= BookingEngine_BeforeInsertAccount;
        }

        void BookingEngine_BeforeInsertAccount(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeInsertAccountEventArgs e)
        {
            if (e.Sig.Module == MercatorUi.Sig._SigEnum.GEN) // on teste si on inscrit un compte général : ce sera toujours le cas dans une vente ou un achat
            {
                if (Dialogs.AnswerYesNo(string.Format("Réellement choisir le compte général \"{0}\" ?", e.GenRecord.G_NOM)))
                    e.LignesCRecord.COMMENTAIR = e.GenRecord.G_NOM;
                else
                    e.CancelInsertAccount = true; // ce flag indique à Mercator qu'on refuse la sélection de ce compte général
            }
        }
    }
}