using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using MercatorDatabase;

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

        public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine bookingEngine)
        {
            bookingEngine.BeforeSave += bookingEngine_BeforeSave;
        }

        public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine bookingEngine)
        {
            bookingEngine.BeforeSave -= bookingEngine_BeforeSave;
        }

        void bookingEngine_BeforeSave(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;

            if ((bookingEngine.Context == MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.PostIntoAccounting)
                && (bookingEngine.Type == 2) // aankoop
                && (bookingEngine.PIEDS_C.Value<double>("escpte_pc").CompareTo(0, 2) != 0)
                && (_Divers.Get_ESC_ND_TVA(bookingEngine.PIEDS_C) == "OUI") // Niet-afgetrokken disconto beïnvloedt de btw-maatstaf
                && (bookingEngine.PIEDS_C.Value<double>("HeaderTotal").CompareTo(0, Globals.DEC_DEV_C) != 0)
                && (Globals.Params["CODTVAESCA"] != ""))
            {
                foreach (DataRow bookingLine in bookingEngine.LIGNES_C.Select("id_tva = ''"))
                    bookingLine["id_tva"] = Globals.Params["CODTVAESCA"];
                bookingEngine.UpdateAmounts();
            }
        }
    }
}