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

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

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave += new MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventHandler(billingEngine_BeforeSave);
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave -= new MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventHandler(billingEngine_BeforeSave);
        }

        void billingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            if ((billingEngine.PIEDS2 != null) && ((Convert.ToInt32(billingEngine.PIEDS2[0]["type"]) == 2) || (Convert.ToInt32(billingEngine.PIEDS2[0]["type"]) == 3))
                && (
                (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem1"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem2"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem3"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem4"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem5"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem6"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem7"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem8"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["tot_paiem9"]), billingEngine.NDec) != 0)
                || (Math.Round(Convert.ToDouble(billingEngine.PIEDS["rendu"]), billingEngine.NDec) != 0))
                && (billingEngine.PIEDS["id_cli"].ToString() != billingEngine.PIEDS2[0]["id_cli"].ToString())
                && MercatorUi.Dialogs.AnswerYesNo("Vous venez de modifier le client, alors qu'un paiement a déjà été perçu. Associer ce paiement au nouveau client ?"))
            {
                foreach (DataRow dr in billingEngine.PIEDS2)
                    dr["id_cli"] = billingEngine.PIEDS["id_cli"];
            }
        }
    }
}