Standaard over tien rekeningen beschikken die gekoppeld zijn aan een leverancier bij het ingeven van aankoopboekingen

0000002135     -      30-10-2013

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.

Zoom
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();
        }

        
    }
}