using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;


namespace Gescom
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        public void FormLoadCustomize(Form WindowsForm)
        {
            if (WindowsForm is MercatorUi.Forms.Gescom.GescomAllowancesForm)
            {
                MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm = (MercatorUi.Forms.Gescom.GescomAllowancesForm)WindowsForm;
                if (gescomAllowancesForm.TypeVA == MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V) // uniquement pour les remises clients
                    gescomAllowancesForm.AfterImportItems += new MercatorUi.Forms.Gescom.GescomAllowancesForm.AfterImportItemsEventHandler(gescomAllowancesForm_AfterImportItems);
            }
        }

        public void FormClosedCustomize(Form WindowsForm)
        {
            if (WindowsForm is MercatorUi.Forms.Gescom.GescomAllowancesForm)
            {
                MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm = (MercatorUi.Forms.Gescom.GescomAllowancesForm)WindowsForm;
                if (gescomAllowancesForm.TypeVA == MercatorUi.Engine.Gescom.Billing.TypeVAEnum.V) // uniquement pour les remises clients
                    gescomAllowancesForm.AfterImportItems -= new MercatorUi.Forms.Gescom.GescomAllowancesForm.AfterImportItemsEventHandler(gescomAllowancesForm_AfterImportItems);
            }
        }

        void gescomAllowancesForm_AfterImportItems(object sender, MercatorUi.Forms.Gescom.GescomAllowancesForm.AfterImportItemsEventArgs e)
        {
            MercatorUi.Forms.Gescom.GescomAllowancesForm gescomAllowancesForm = (MercatorUi.Forms.Gescom.GescomAllowancesForm)sender;
            double remise = MercatorUi.Dialogs.AskDouble(string.Format("Quelle remise appliquer à ces lignes importées depuis le {0} ?", (e.Mode == MercatorUi.Forms.Gescom.GescomAllowancesForm.ImportItemsMode.FromBarcodeTerm ? "terminal" : "filtre des articles")), 0, "##0.00");
            if (remise == double.MinValue) // on a cliqué sur annuler
            {
                if (MercatorUi.Dialogs.AnswerYesNo("Voulez-vous alors supprimer les lignes importées ?"))
                {
                    foreach (DataRow dr in e.DataRowLignes)
                        gescomAllowancesForm.Dt.Rows.Remove(dr);
                }
            }
            else
            {
                remise = Api.Min(remise, 100); // ne pas autoriser une remise > 100
                remise = Api.Max(remise, 0); // ne pas autoriser une remise < 0
                foreach (DataRow dr in e.DataRowLignes)
                    dr["remise"] = remise;
            }
        }
    }
}