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 de vente, confirmer le client et placer sa ville dans la référence

0000002034     -      26/08/2017

Cette programmation montre comment intervenir sur la sélection du client dans une écriture comptable de vente. Elle présente simplement une boîte de dialogue permettant de confirmer ou d'annuler la sélection du client. Si le client est accepté, sa ville est placée dans la zone "référence". Ce customizer est fait pour l'exemple et sera le point de départ de programmations plus ambitieuses. Le principe illustré ci-dessous s'applique aussi aux achats de la comptabilité pour gérer la sélection du fournisseur.

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 BeforeApplyCustomerSupplier 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.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.BeforeApplyCustomerSupplier += new MercatorUi.Engine.Cpta.BookingEngine.BeforeApplyCustomerSupplierEventHandler(BookingEngine_BeforeApplyCustomerSupplier);
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            BookingEngine.BeforeApplyCustomerSupplier -= new MercatorUi.Engine.Cpta.BookingEngine.BeforeApplyCustomerSupplierEventHandler(BookingEngine_BeforeApplyCustomerSupplier);
        }

        void BookingEngine_BeforeApplyCustomerSupplier(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeApplyCustomerSupplierEventArgs e)
        {
            MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;
            string ville = MercatorController.xFunctions.xLookUpString("CLI", "C_ID", e.IdCliOrFou, "C_VILLE").TrimEnd();
            if (Dialogs.AnswerYesNo(string.Format("Accepter le client \"{0}\" habitant {1} ?", e.IdCliOrFou, ville)))
                bookingEngine.PiedsCRecord.REFERENCE = ville;
            else
                e.CancelApplyCustomerSupplier = true; // ce flag indique à Mercator qu'on refuse la sélection de ce client
        }
    }
}