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

// <CompileWithRoslyn />

namespace MercatorUi.MovableControls.ButtonsCodes
{
    public static class Script
    {
        public static void Exec(MovableButton clickedButton)
        {
            Forms.Sig.SigForm sigForm = (Forms.Sig.SigForm)clickedButton.Form;
            string journal = Dialogs.AskJournal("Quel type de document ?", _Dialogs.AskPieceEnum.V, 3, true, "")?.Journal;
            if (!string.IsNullOrEmpty(journal))
            {
                Engine.Gescom.BillingEngine billingEngine = Engine.Gescom.BillingEngine.InitNew(Engine.Gescom.Billing.TypeVAEnum.V, 3, journal);
                if (billingEngine.DataSet == null)
                {
                    Dialogs.Stop(billingEngine.LastError);
                    return;
                }
                billingEngine.ApplyCustomerSupplier(sigForm.CliRecord.C_IDCOMPTA);
                billingEngine.ApplyCliLiv(sigForm.CliRecord.C_ID);
                Forms.Billing.BillingForm billingForm = Globals.Main.ShowBillingNewInThread(billingEngine);
                billingForm.FullInitialized += BillingForm_fullInitialized;
            }
        }
        private static void BillingForm_fullInitialized(object sender, EventArgs e)
        {
            Forms.Billing.BillingForm billingForm = (Forms.Billing.BillingForm)sender;
            billingForm.FullInitialized -= BillingForm_fullInitialized;
            billingForm.LinesEditor?.Focus();
        }
    }
}