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;
        }
    }
}