using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Linq;
using MercatorUi.Engine.Gescom;


namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(BillingEngine billingEngine)
        {
            billingEngine.EvaluatingQtyForLinkedDocLineUpdate += BillingEngine_EvaluatingQtyForLinkedDocLineUpdate;
            billingEngine.HandlingLinkedDocLine += BillingEngine_HandlingLinkedDocLine;
        }

        public void BillingEngineClosed(BillingEngine billingEngine)
        {
            billingEngine.EvaluatingQtyForLinkedDocLineUpdate -= BillingEngine_EvaluatingQtyForLinkedDocLineUpdate;
            billingEngine.HandlingLinkedDocLine -= BillingEngine_HandlingLinkedDocLine;
        }

        private void BillingEngine_EvaluatingQtyForLinkedDocLineUpdate(object sender, BillingEngine.EvaluatingQtyForLinkedDocLineUpdateEventArgs e)
        {
            if (e.LignesVRecord.Q_RESERVE.CompareTo(e.LignesVRecord2.Q_RESERVE, Globals.N_DEC_Q) != 0)
                e.ShouldUpdateOppositeDocument = true;
        }

        private void BillingEngine_HandlingLinkedDocLine(object sender, BillingEngine.HandlingLinkedDocLineEventArgs e)
        {
            e.LignesARecordOpposite.Q = e.LignesVRecordSource.Q - e.LignesVRecordSource.Q_RESERVE;
        }
    }
}