Voor deze programmering moeten er 10 velden worden toegevoegd waarin de rekeningen die standaard aan elke leverancier gekoppeld zijn, kunnen worden ingegeven. Bij het boeken van aankopen in de boekhouding krijgt de gebruiker vervolgens standaard de lijst van zijn rekeningen indien hij 0 (nul) + enter ingeeft in de kolom van de rekening.
Om deze configuratie te implementeren, moeten eerst de velden F_ID_GEN0 tot F_ID_GEN9 van het type C (10) worden toegevoegd in de tabel FOU. Het is mogelijk om minder velden toe te voegen. Deze velden stemmen overeen met gekruiste links tussen informatiebestanden
Via de configuratie van het informatiebestand voegt u vervolgens tekstvakken toe die aan deze velden gekoppeld zijn. (Cfr. 'Tools / Schermen bestanden / Parametrering / Leveranciers')
Deze tekstvakken geven de gebruiker de kans om in de fiche van elke leverancier tot 10 algemene rekeningen in te geven. Deze ingave wordt door Mercator gevalideerd (het is onmogelijk om een onbestaande rekening in te geven).
Vervolgens moet u deze code, die de interface MercatorUi.ICustomizers.ISigCreated gebruikt, in een customizer SigGen plaatsen. Deze customizer gebruikt het BeforeSearch-event.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Drawing;
using System.Windows.Forms;
namespace SigGen
{
public class Customizer : MercatorUi.ICustomizers.ISigCreated
{
public void SigCreated(MercatorUi.Sig.Sig Sig)
{
Sig.BeforeSearch += new MercatorUi.Sig.SigClasses.BeforeSearchEventHandler(Sig_BeforeSearch);
}
void Sig_BeforeSearch(object sender, MercatorUi.Sig.SigClasses.BeforeSearchEventArgs e)
{
Form form = MercatorUi.Globals.Main.WonTopForm();
if ((form == null) || !(form is MercatorUi.Forms.Booking.BookingForm)) // u bevindt zich niet in een boekingsscherm
return;
MercatorUi.Forms.Booking.BookingForm bookingForm = (MercatorUi.Forms.Booking.BookingForm)form;
if (bookingForm.BookingEngine == null) // u bevindt zich in een boeking maar wel in configuratiemodus
return;
if (bookingForm.BookingEngine.Type != 2) // u bevindt zich niet in een aankoopboeking
return;
if (e.Key != "0") // de gebruiker heeft geen 0 ingegeven: hij wil dus een gewone zoekopdracht
return;
if (bookingForm.BookingEngine.PIEDS_C["supplier"].ToString().TrimEnd() == "") // de leverancier werd niet geselecteerd
return;
StringBuilder sb = new StringBuilder();
bool premier_fait = false;
// er wordt rekening gehouden met het veld f_comptea van de huidige leverancier
if (bookingForm.BookingEngine.FOU["f_comptea"].ToString() != "")
{
sb.AppendFormat("(g_id='{0}')", bookingForm.BookingEngine.FOU["f_comptea"]);
premier_fait = true;
}
// er wordt rekening gehouden met de velden f_id_gen0 tot f_id_gen9 van de huidige leverancier
for (int i_gen = 0; i_gen <= 9; i_gen++)
{
if (bookingForm.BookingEngine.FOU.Table.Columns.Contains("f_id_gen" + i_gen.ToString()) && (bookingForm.BookingEngine.FOU["f_id_gen" + i_gen.ToString()].ToString() != ""))
{
if (premier_fait)
sb.Append(" or ");
sb.AppendFormat("(g_id='{0}')", bookingForm.BookingEngine.FOU["f_id_gen" + i_gen.ToString()]);
premier_fait = true;
}
}
e.DesiredWhereClause = sb.ToString();
}
}
}