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

Lors de la génération des financiers à partir des CODA, tenir compte de l'analytique par défaut

0000002206     -      17/11/2020

Cette programmation permet, lors de la génération des financiers à partir de la récupération des extraits de compte codifiés (CODA), de tenir compte de l'analytique définie par défaut au niveau des comptes généraux.

Elle exploite notamment l’évènement BeforeSave et implémente les interfaces suivantes :

Le code s'établit comme suit :

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

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

        public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            if (Globals.MercatorOptions.Contains("ANA") && (BookingEngine.Context == MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.BankFin)) // uniquement si financier généré à partir des CODA
                BookingEngine.BeforeSave += BookingEngine_BeforeSave;
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            if (Globals.MercatorOptions.Contains("ANA") && (BookingEngine.Context == MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.BankFin))
                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;
            foreach (DataRow dr in bookingEngine.LIGNES_C.Rows)
            {
                StringBuilder fields_list = new StringBuilder();
                for (int i_ana = 1; i_ana <= 9; i_ana++)
                {
                    string s_ana = i_ana.ToString();
                    if ((Globals.Params["ANA_PLAN" + s_ana] != "") && bookingEngine.LIGNES_C.Columns.Contains("is_ana" + s_ana) && Convert.ToBoolean(dr["is_ana" + s_ana]))
                        fields_list.AppendFormat("g_id_ana{0},", i_ana);
                }
                if (fields_list.Length > 0)
                {
                    fields_list.Length--; // retirer la dernière virgule
                    DataSet ds = Api.Zselect(Globals.RepData, string.Format("select {0} from GEN (NOLOCK) where g_id=@g_id", fields_list), new MercatorSqlParam("@g_id", dr["compte"], SqlDbType.Char));
                    if ((ds != null) && (ds.Tables[0].Rows.Count > 0))
                    {
                        for (int i_ana = 1; i_ana <= 9; i_ana++)
                        {
                            string s_ana = i_ana.ToString();
                            if (ds.Tables[0].Columns.Contains("g_id_ana" + s_ana))
                            {
                                int n_ana = bookingEngine.AppendLineAna(i_ana, dr["dl_id"].ToString());
                                if (bookingEngine.InsertAnaFull(ds.Tables[0].Rows[0]["g_id_ana" + s_ana].ToString(), bookingEngine.LIGNES_C_ANA.Rows[n_ana], i_ana))
                                {
                                    bookingEngine.LignesCanaRecords[n_ana].TOT_DV = Convert.ToDouble(dr["tot_dv"]);
                                    bookingEngine.LignesCanaRecords[n_ana].TOT = Convert.ToDouble(dr["tot"]);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}