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

Agir sur les cases à cocher de la boîte de dialogue de sélection des journaux pour la centralisation comptable

0000002400     -      16/12/2016

Ce customizer montre comment intervenir sur la boîte de dialogue permettant de sélectionner les journaux de la gestion commerciale qui vont faire l'objet de la centralisation en comptabilité.

La mécanique de ce code s'articule comme suit :

  • On utilise l'évènement Globals.Main.BaseFormCreating afin de prendre la main sur la création de la fenêtre de recherche qui est de type MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting
    • Cet évènement est inscrit lors de l'action DossierOpen
    • Il est désinscrit lors de l'action DossierClose
  • Dans cet évènement, on va inscrire un évènement FullInitialized sur cette fenêtre. Ainsi, le code qui y sera placé, sera exécuté quand cette fenêtre sera totalement construite et affichée.
  • Dans ce code, on va
    • Décocher et rendre inaccessible la case à cocher associée au journal VEN
    • Décocher la case à cocher "Achats"

Le code est le suivant :

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

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BaseFormCreating += new MercatorUi.Main.BaseFormCreatingEventHandler(Main_BaseFormCreating);
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BaseFormCreating -= new MercatorUi.Main.BaseFormCreatingEventHandler(Main_BaseFormCreating);
            }
        }

        void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
        {
            if (e.Form is MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting)
            {
                MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting accountingAskPostIntoAccouting = (MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting)e.Form;
                accountingAskPostIntoAccouting.FullInitialized += accountingAskPostIntoAccouting_FullInitialized;
            }
        }

        private void accountingAskPostIntoAccouting_FullInitialized(object sender, EventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting accountingAskPostIntoAccouting = (MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting)sender;
            accountingAskPostIntoAccouting.FullInitialized -= accountingAskPostIntoAccouting_FullInitialized;

            // rendre inaccessible et décocher la case à cocher d'un journal (ici VEN)
            DataRow[] foundRows = accountingAskPostIntoAccouting.DtSequenc.Select("journal='VEN'");
            if (foundRows.Length > 0)
            {
                MercatorUi._BaseClasses.DataRowNode node = (MercatorUi._BaseClasses.DataRowNode)foundRows[0]["node"];
                node.Enabled = false;
                node.Checked = false;
            }

            // décocher le noeud achats
            accountingAskPostIntoAccouting.Tree.Nodes[1].Checked = false; // 1 car il s'agit du second noeud
        }
    }
}

Ceci n'est applicable que pour la centralisation vers Mercator comptabilité.