Over de 10 laatste boekingsregels beschikken die voor deze klant/leverancier gebruikt worden bij een verkoop- of aankoopboeking

0000002148     -      15-01-2025

Met deze programmering kan u bij het ingeven van een boeking van een verkoop of aankoop in de boekhouding de lijst raadplegen van de voorgaande algemene rekeningen die gebruikt werden voor deze klant/leverancier. De gebruiker kan voortaan de rekening selecteren in het weergegeven dialoogvenster. De functie wordt geactiveerd door op de toets = in de kolom van de algemene rekening te drukken.

De code is gebaseerd op een customizer SigGen die de interface MercatorUi.ICustomizers.ISigCreated implementeert en gebruik maakt van het event BeforeSearch van de klasse MercatorUi.Sig.Sig.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
 
// <CompileWithRoslyn />

namespace SigGen
{
    public class Customizer : MercatorUi.ICustomizers.ISigCreated
    {

        public void SigCreated(MercatorUi.Sig.Sig sig)
        {
             sig.BeforeSearch += 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 bookingForm)) // u bevindt zich niet in een boekhoudkundig boekingsscherm
                return;
            if (bookingForm.BookingEngine == null) // u bevindt zich in een boeking in de boekhouding maar in configuratiemodus
                return;
            if ((bookingForm.BookingEngine.Type != 1) && (bookingForm.BookingEngine.Type != 2)) // u bevindt zich niet in een aan- of verkoopboeking
                return;
            if (e.Key != "=") // de gebruiker heeft geen = ingegeven: hij wil dus een gewone zoekopdracht
                return;
            if ((bookingForm.BookingEngine.Type == 1) && bookingForm.BookingEngine.CLI == null) // de leverancier werd niet geselecteerd
                return;
            if ((bookingForm.BookingEngine.Type == 2) && bookingForm.BookingEngine.FOU == null) // de leverancier werd niet geselecteerd
                return;

            string reqSql = string.Format("create table #id_gen_tmp (id_gen char(10)) \r\n"
                                        + "insert into #id_gen_tmp \r\n"
                                        + "    exec {0}.dbo.SP_GET_LAST_BOOKINGS @id_tiers,@type_doc \r\n"
                                        + "select rtrim(g_id)+' '+g_nom as nom,g_id as id from #id_gen_tmp inner join gen on (id_gen COLLATE DATABASE_DEFAULT=g_id COLLATE DATABASE_DEFAULT) \r\n"
                                        + "drop table #id_gen_tmp \r\n"
                                        , MercatorUi.Globals.DatabaseName);
            MercatorUi.Sig.Sig sigGen = MercatorUi.Sig._SigsStatic.SigByModule(MercatorUi.Sig._SigEnum.GEN);
            string langue = Globals.Langue.ToString();
            if ((langue != Globals.Params["LANGUE_DEF"]) && sigGen.FieldList.ContainsKey("G_NOM" + langue))
                reqSql = reqSql.Replace("g_nom", string.Format("(case when g_nom{0} = '' then g_nom else g_nom{0} end)", langue.ToLower()));

            DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, reqSql
                , new MercatorSqlParam("@id_tiers", (bookingForm.BookingEngine.Type == 1 ? bookingForm.BookingEngine.CliRecord.C_ID : bookingForm.BookingEngine.FouRecord.F_ID), SqlDbType.Char)
                , new MercatorSqlParam("@type_doc", bookingForm.BookingEngine.Type));
            if (ds == null) // deze SQL-opdracht veroorzaakte een fout -> de normale zoekopdracht wordt verder uitgevoerd
                return;
            if (ds.Tables[0].Rows.Count == 0) // geen lijn gevonden -> de normale zoekopdracht wordt verder uitgevoerd
                return;

            Api.TrimEndDataTable(ds.Tables[0]);

            string id_gen_selected = MercatorUi.Dialogs.AskList(MercatorUi._Divers.Iif_langue(MercatorUi.Globals.Langue, "Previous bookings :", "Vorige boekingen :", "Imputations précédentes :"), "", ds.Tables[0]);
            if (string.IsNullOrEmpty(id_gen_selected)) // u koos 'Annuleren' -> de normale zoekopdracht wordt verder uitgevoerd
                return;

            e.DesiredWhereClause = string.Format("g_id='{0}'", id_gen_selected);
        }
    }
}


Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)