Werk met de aanduidbare vakken van het dialoogvenster bij de selectie van de journalen voor de boekhoudkundige centralisatie

0000002400     -      16-12-2016

Deze customizer toont hoe het invoeren van aanpassingen in het dialoogvenster voor het selecteren van het boekhoudkundige journaal dat het object gaat zijn van de boekhoudkundige centralisatie.

De mechanieken van deze code zijn de volgende:

  • Gebruik het Globals.Main.BaseFormCreating event om de controle over de creatie van het zoekvenster te hebben die van het type MercatorUi.Forms.Accounting.AccountingDialogs.AccountingAskPostIntoAccouting is
    • Dit evenment wordt ingeschreven tijdens de DossierOpen actie
    • Hij wordt uitgeschreven tijdens de DossierClose actie
  • In dit evenment schrijven we een ander FullInitialized evenement in dit venster. Dus, de code die geplaatst is zal worden uitgevoerd wanneer het venster volledig wordt gebouwd en weergegeven.
  • In deze code zullen we
    • Haal het vinkje weg en maak de checkbox die geassocieerd is met het VEN journaal ontoegankelijk
    • Haal het vinkje weg bij “Aankopen"

De code is als volgt:

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;

            // Hier het ontoegankelijk maken van de checkbox van een journaal (hier 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;
            }

            // verwijder het vinkje in de aankopen tab
            accountingAskPostIntoAccouting.Tree.Nodes[1].Checked = false; // 1 omdat het zich in de 2de tab bevind
        }
    }
}

Dit geldt alleen voor de centralisatie naar de Mercator boekhouding.