using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.AfterBo += BillingEngine_AfterBo;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.AfterBo -= BillingEngine_AfterBo;
        }

        void BillingEngine_AfterBo(object sender, MercatorUi.Engine.Gescom.BillingEngine.AfterBoEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            foreach(MercatorDatabase.LIGNES_V l in billingEngine.LignesVRecords.Where(l => l.NO_BO))
            {
                DataRow[] foundRows;
                if (l.GENERIQ)
                    foundRows = e.LinesOriginalDocument.Select(string.Format("(id_article='{0}') and (designatio='{1}') and (serie=0)",
                        Api.UnquoteSql(l.ID_ARTICLE), Api.UnquoteSql(l.DESIGNATIO)));
                else
                    foundRows = e.LinesOriginalDocument.Select(string.Format("(id_article='{0}') and (serie=0)",
                        Api.UnquoteSql(l.ID_ARTICLE)));

                foreach (DataRow dr2 in foundRows)
                    e.LinesOriginalDocument.Rows.Remove(dr2);
            }
        }

    }
}