namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeUpdateAmounts += BillingEngine_BeforeUpdateAmounts;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeUpdateAmounts -= BillingEngine_BeforeUpdateAmounts;
        }

        private void BillingEngine_BeforeUpdateAmounts(object sender, MercatorUi.Engine.Gescom.BillingEngine.UpdateAmountsEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            foreach (DataRow dr in e.DtLignes.Select("id_article<>''"))
            {
                if (billingEngine.PiedsVRecord.REGIME != RegimesEnum.VatIncluded)
                    Api.SmartReplace(dr, "remise_net_dv9", -dr.Value<double>("s_bebat"));
                else
                    Api.SmartReplace(dr, "remise_net_dv9", Math.Round(-dr.Value<double>("s_bebat") * (1 + dr.Value<double>("taux_tva") / 100), 5), 5);
            }
        }
    }
}