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)) // on n'est pas dans un écran d'écriture comptable
return;
MercatorUi.Forms.Booking.BookingForm bookingForm = (MercatorUi.Forms.Booking.BookingForm)form;
if (bookingForm.BookingEngine == null) // on est dans une écriture comptable mais en mode paramétrage
return;
if (bookingForm.BookingEngine.Type != 2) // on n'est pas dans une écriture d'achat
return;
if (e.Key != "0") // l'utilisateur n'a pas saisi 0 : donc il veut une recherche normale
return;
if (bookingForm.BookingEngine.PIEDS_C["supplier"].ToString().TrimEnd() == "") // le fournisseur n'est pas sélectionné
return;
StringBuilder sb = new StringBuilder();
bool premier_fait = false;
// on prend en compte le champ f_comptea du fournisseur en cours
if (bookingForm.BookingEngine.FOU["f_comptea"].ToString() != "")
{
sb.AppendFormat("(g_id='{0}')", bookingForm.BookingEngine.FOU["f_comptea"]);
premier_fait = true;
}
// on prend en compte les champs f_id_gen0 à f_id_gen9 du fournisseur en cours
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();
}
}
}