Dans une écriture comptable, empêcher la sauvegarde si un compte particulier n'est pas utilisé

0000002036     -      31/12/2024

Cette programmation montre comment intervenir sur le processus de sauvegarde d'une écriture comptable. Elle permet simplement de bloquer cette sauvegarde si l'écriture ne contient aucune imputation sur le compte 499000. 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 BeforeSave 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;
using System.Linq;
using MercatorExtensions;

namespace Booking
{
    public class Customizer : MercatorUi.ICustomizers.IBookingEngineCreated, MercatorUi.ICustomizers.IBookingEngineClosed
    {

        public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine bookingEngine)
        {
             bookingEngine.BeforeSave += BookingEngine_BeforeSave;
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine bookingEngine)
        {
             bookingEngine.BeforeSave -= BookingEngine_BeforeSave;
        }

        void BookingEngine_BeforeSave(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;
            // on vérifie si au moins une ligne contient le compte 499000 et un montant non nul
            if (bookingEngine.LignesCRecords.Where(l => (l.COMPTE == "499000") && (l.TOT_DV.CompareTo(0d, bookingEngine.PiedsCRecord.N_DEC) != 0)).Count() == 0)
            {
                Dialogs.Stop("Cette écriture ne contient aucune imputation sur le compte 499000 !");
                e.CancelSave = true; // ce flag indique à Mercator qu'on refuse la sauvegarde de l'écriture
            }
        }
    }
}


Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)