Analytische rekening en discontorekening

0000002538     -      04-10-2015

Het principe van de oplossing is als volgt:

Indien de discontorekening (parameters ingesteld via Opties\Boekhouding) voor het plan 1 een verplicht analytische rekening vereist, en deze analytische rekening standaard is gespecificeerd, wordt bij de validatie van het boekhoudkundig stuk voor deze rekening een lijn toegevoegd in lignes_c_ana.

Deze customizer moet in de sequentie van het boekhoudjournaal geplaatst worden :
 
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;

namespace Booking
{
    public class Customizer : MercatorUi.ICustomizers.IBookingEngineCreated, MercatorUi.ICustomizers.IBookingEngineClosed
    {

        public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            BookingEngine.DuringSave += new MercatorUi.Engine.Cpta.BookingEngine.DuringSaveEventHandler(BookingEngine_DuringSave);
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
        {
            BookingEngine.DuringSave -= new MercatorUi.Engine.Cpta.BookingEngine.DuringSaveEventHandler(BookingEngine_DuringSave);
        }

        void BookingEngine_DuringSave(object sender, MercatorUi.Engine.Cpta.BookingEngine.DuringSaveEventArgs e)
        {
            MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;
            if ((bookingEngine.Context != MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.PostIntoAccounting)
            || (Convert.ToDouble(bookingEngine.BillingPiedWhenPosting["Escpte_pc"]) == 0))
                return;
            e.SqlCommand.CommandText = "declare @g_id_ana1 char(10) \r\n"
                                     + "select @g_id_ana1=g_id_ana1 from gen where g_id=@CPTA_DP1_C \r\n"
                                     + "if isnull(@g_id_ana1,'')<>'' \r\n"
                                     + "begin \r\n"
                                     + "    insert into #lignes_c_ana_tmp (num_ex,journal,piece,dl_id,dl_id2,num_plan,recno,id_ana,tot_dv,tot,date,type_ligne,dl_id_eq,commentair) \r\n"
                                     + "    select num_ex,journal,piece,dl_id,right(newid(),10),1,1,@g_id_ana1,tot_dv,tot,date,0,'',commentair from #lignes_c_tmp where id_gen=@CPTA_DP1_C \r\n"
                                     + "end";
            e.SqlCommand.Parameters.AddWithValue("@CPTA_DP1_C", MercatorUi.Globals.Params["CPTA_DP1_C"]).SqlDbType = SqlDbType.Char;
            if (!Api.SqlExec(e.SqlCommand))
                e.CancelSave = true;
        }
    }
}

 


 

Hallo,

Onze klant werkt met een analytische rekeningstructuur in zijn commercieel beheer.

Bij het centraliseren, wanneer er sprake is van een korting in de leveranciersfacturen en wij de analytische structuur willen beheren voor de discontorekening, verschijnt de onderstaande melding:

"De wijzigingen kunnen niet worden opgeslagen: het totaal van de analytische boekingen stemt niet overeen met het geboekte basisbedrag! "