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 :
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é.