using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

using Cosmos.ServiceProvider;
using Cosmos.CommonManager;
using Cosmos.Common;
using Cosmos.UserFrame;
using Cosmos.BaseFrame;

namespace Cosmos.Win
{
    public partial class frmSOD : Form
    {

        #region 변수 선언

        private SManager sManager = new SManager();                                 // 이 객체를 통해 업무 Service 호출
        private PosStatus m_cPosStatus = new PosStatus();                           // 기본정보 참조
        private StateServer StateObject = (StateServer)StateServer.GetInstance();   // StateObject : StateServer Object (객체)
        private IDataServiceUs m_cSOD = null;                                       // 테스트모드 서비스

        private IStoreCheck m_cStoreCheck = null;                                   // 점포점검 서비스

        /// <summary>
        /// 메인포스 오픈일자 
        /// </summary>
        /// <remarks>
        /// 후불주문포스 인경우 참조 
        /// </remarks>
        private string MainPosOpenDate { get; set; }

        #endregion 변수 선언

        #region 생성자 & 소멸자

        public frmSOD()
        {
            InitializeComponent();

            base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
            //this.UpdateStyles();

            m_cPosStatus = (PosStatus)StateObject.POS;      // POS 기본정보
            m_cSOD = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SALE_OPEN);
            m_cStoreCheck = (IStoreCheck)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.STORE_CHECK);
        }

        private void frmSOD_Load(object sender, EventArgs e)
        {
            UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");

            // 콘트롤 초기화 처리
            InitControl();
        }

        private void frmSOD_FormClosing(object sender, FormClosingEventArgs e)
        {
            UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text);
        }

        #endregion 생성자 & 소멸자

        #region 폼 컨트롤 초기화
        /// <summary>
        /// 폼 컨트롤 초기화
        /// </summary>
        private void InitControl()
        {
            try
            {
                picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S);

                FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser);
                FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);
                FormManager.SetTextBoxGlobalInfo(this, m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits, m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol
                    , m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits, m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol);

                //테마색상 적용!
                padInPut.ThemeColor = m_cPosStatus.ScnMst.ThemeColor;
                padInPut.ClearBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0817);
                padInPut.SearchBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1018);

                btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE);
                if (btnExit.Image != null) btnExit.Text = "";
                btnDate.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.ICON_DATE_BASIC);
                if (btnDate.Image != null) btnDate.Text = "";
                
                lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0001);
                lblCashierName.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0191);
                lblSaleDate.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0242);
                lblOrgDate.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0517);
                lblSysDate.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0516);

                btnOpen.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0001);

                txtCashierName.Text = m_cPosStatus.Base.CashierName;

                txtOrgDate.Text = m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate);
                txtSysDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.ToString("yyyyMMdd"));

                txtSaleDate.InputTypeFormat = m_cPosStatus.Global.m_stCultureMaster.strDatePattern;
                txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.ToString("yyyyMMdd"));

                // 익일개점이 가능할 경우
                // 영업일자가 시스템 일자와 같으며 마감이 되어 있다면 다음날로 날짜를 자동 설정한다.
                if (PosMstManager.GetPosOption(POS_OPTION.OPT302) != "0")
                {
                    #region Mod, 2017.08.29, 익일개점 판단조건 변경
                    //if (m_cPosStatus.Base.SaleDate == System.DateTime.Now.ToString("yyyyMMdd") && m_cPosStatus.Base.OpenClose == "0")
                    //{
                    //    txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.AddDays(1).ToString("yyyyMMdd"));
                    //}
                    //else
                    //{
                    //    txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.ToString("yyyyMMdd"));
                    //} 
                    #endregion

                    if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) >= CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")) && m_cPosStatus.Base.OpenClose == "0")
                    {
                        txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.AddDays(1).ToString("yyyyMMdd"));
                    }
                    else
                    {
                        txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.ToString("yyyyMMdd"));
                    }
                }
                //else
                //{
                //    txtSaleDate.Value = System.DateTime.Now.ToString("yyyyMMdd");
                //}

                // Add, 2017.03.14, 후불주문POS는 메인포스 개점 이후 개점 가능 
                //var mainOpenDate = string.Empty;
                //if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.SUB_POS)
                //{
                //    //IDataServiceUs openCheck = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SALE_OPEN);
                //    //sRet = (string)openCheck.GetData(new string[] { "CHECK_SUBPOS_OPEN" });
                //    //if (sRet.StartsWith(UserCom.RST_ERR))
                //    //{
                //    //    WinManager.ErrorMessage(sRet);
                //    //    return false;
                //    //}
                //    //if (sRet.StartsWith(UserCom.RST_OK))
                //    //{
                //    //    var tmp = sRet.Split('|');
                //    //    mainOpenDate = tmp[1].Trim();
                //    //}
                //}

                // Add, 2017.03.16, 후불 주문포스는 메인포스 개점 이후 개점 가능, 영업일은 메인포스 영업일로 고정
                MainPosOpenDate = string.Empty;
                txtSaleDate.ReadOnly = false;
                btnDate.Enabled = true;
                if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.SUB_POS)
                {
                    var ret = (string)m_cSOD.GetData(new string[] { "CHECK_SUBPOS_OPEN" });
                    if (ret.StartsWith(UserCom.RST_ERR))
                    {
                        WinManager.ErrorMessage(ret);
                        this.DialogResult = System.Windows.Forms.DialogResult.Abort;
                        this.Close();
                        return;
                    }
                    if (ret.StartsWith(UserCom.RST_OK))
                    {
                        var tmp = ret.Split('|');
                        if (tmp.Length > 1) this.MainPosOpenDate = tmp[1].Trim();
                    }
                    if (MainPosOpenDate.Trim().Length == 8)
                    {
                        txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(MainPosOpenDate);
                        txtSaleDate.ReadOnly = true;
                        btnDate.Enabled = false; 
                    }
                }

                txtSaleDate.Select();

                //dtSaleDate.Value = System.DateTime.Now;
                //dtSaleDate.Select();
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        #endregion 폼 컨트롤 초기화

        #region Control Event
        /// <summary>
        /// 텍스트박스 활성화 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtEditBox_EnterEvent(object sender, EventArgs e)
        {
            try
            {
                padInPut.SetActiveControl = (Control)sender;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 종료 버튼 클릭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExit_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        /// <summary>
        /// 개점 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpen_Click(object sender, EventArgs e)
        {
            string sRet = UserCom.RST_ERR;

            try
            {
                if (txtSaleDate.Value.Length != 8)
                {
                    WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0186));
                    return;
                }

                //#13342 개점/마감시간 허용 시간 제한 start, phj
                IDataCommonUs m_cMstCmm = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
                string sNextOpenTime = string.Empty;
                sNextOpenTime = m_cMstCmm.MstCmmSearch("T0031", "1"); //POS 익일개점 허용시간 
                //#13342 개점/마감시간 허용 시간 제한 end, phj

                // Add, 2017.03.16, 후불 주문포스는 메인포스 개점 이후 개점 가능, 영업일은 메인포스 영업일로 고정
                var sSaleDate = string.Empty;

                if (MainPosOpenDate.Length == 8 &&
                    m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT &&
                    m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.SUB_POS)
                {
                    txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(MainPosOpenDate);
                    sSaleDate = MainPosOpenDate;
                }
                else
                {
                    // 익일개점이 가능할 경우
                    // 영업일자가 시스템 일자와 같으며 마감이 되어 있다면 다음날로 날짜를 자동 설정한다.
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT302) != "0")
                    {
                        #region Mod, 2017.08.29, 익일개점 판단조건 변경
                        //if (m_cPosStatus.Base.SaleDate == System.DateTime.Now.ToString("yyyyMMdd") && m_cPosStatus.Base.OpenClose == "0")
                        //{
                        //    txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.AddDays(1).ToString("yyyyMMdd"));
                        //} 
                        #endregion

                        if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) >= CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")) && m_cPosStatus.Base.OpenClose == "0")
                        {
                            txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(System.DateTime.Now.AddDays(1).ToString("yyyyMMdd"));
                        }
                    }

                    sSaleDate = m_cPosStatus.Global.CultureToDate(txtSaleDate.Text);

                    // 영업일자 체크
                    if (CmUtil.LongParse(sSaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
                    {
                        WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0186));
                        return;
                    }

                    if (CmUtil.LongParse(sSaleDate) > CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
                    {
                        if (PosMstManager.GetPosOption(POS_OPTION.OPT302) == "0")
                        {
                            WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0186));
                            return;
                        }
                    }
                    
                    // Add, 2017.08.29, 마지막 영업일자 영업일자보다 작거나 같은 경우 오류
                    if (CmUtil.LongParse(sSaleDate) <= CmUtil.LongParse(m_cPosStatus.Base.SaleDate))
                    {
                        WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0186));
                        return;
                    }
                    // Add, 2017.08.29, 내일보다 큰 경우 오류
                    if (CmUtil.LongParse(sSaleDate) > CmUtil.LongParse(System.DateTime.Now.AddDays(1).ToString("yyyyMMdd")))
                    {
                        WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0186));
                        return;
                    }

                    //#13342 개점/마감시간 허용 시간 제한 start, phj
                    //if (m_cPosStatus.Base.CmpCd == "PCKR") 
                    //{
                        // 옵션값있을경우
                        if (sNextOpenTime != "")
                        {
                            // 기준시간이 지났을 경우, 익일로만 개점 가능하다. 
                            // 그 전에는 익일 개점 불가.
                            int iNowTime = CmUtil.IntParse(System.DateTime.Now.ToString("HHmm"));

                            if (CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")) < CmUtil.LongParse(sSaleDate))
                            {
                                if (int.Parse(sNextOpenTime, 0) <= iNowTime)
                                {

                                }
                                else
                                {
                                    string sMsg = string.Empty;
                                    sMsg = sNextOpenTime.Substring(0,2) + ":" + sNextOpenTime.Substring(2,2);
                                    WinManager.ConfirmMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0767), sMsg));
                                    return;
                                }
                            }
                        }
                    //} 
                    //#13342 개점/마감시간 허용 시간 제한 end, phj
                }

                //// 영업개시 시작(IRT 전송)
                //sRet = m_cSOD.Execute(new string[] { sSaleDate, m_cPosStatus.Base.CashierNo, "0" });
                //if (sRet != UserCom.RST_OK)
                //{
                //    // 영업개시 통신에 실패하였습니다. 수동 개설 하시겠습니까?
                //    if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0188)) != true)
                //    {
                //        this.DialogResult = DialogResult.Cancel;
                //        return;
                //    }
                //}

                // 영업일자 확인 팝업창 발생
                if (WinManager.QuestionMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0575), txtSaleDate.Text)) != true)
                {
                    //WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0574));
                    return;
                }
                    
                // 개점 완료 처리 => 영업일자 변경, 거래번호 설정
                sRet = m_cSOD.SetData(sSaleDate);
                if (sRet != UserCom.RST_OK)
                {
                    WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0574));
                    return;
                }

                // 개점정보 생성
                IAccADMT m_cAccADMT = (IAccADMT)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.ACC_ADMT);
                sRet = m_cAccADMT.SetData(new string[] { ItemConst.TRAN_KIND.LOG.POS_OPEN, ItemConst.TRAN_DIV.NORMAL }, null, "0");
                if (sRet != UserCom.RST_OK)
                {
                    WinManager.ErrorMessage(sRet);
                }
                
                // 준비금 입력
                sRet = WinOpenClose.ShowForm(new string[] { FormManager.FORM_ACC_REMONEY, sSaleDate, "AutoClose" });
                if (sRet != UserCom.RST_OK)
                {
                }

                // 환율 수기 등록
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT040), "0") == "1")
                {
                    IDataCommonUs m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
                    DataTable dtMemu = m_cDataCommon.SelectForeign();
                    // 수신 받은 환율이 없는 경우 수기등록 화면으로 이동
                    if (dtMemu == null)
                    {
                        sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ETC_EXCHANGE_REG, "" }); 
                    }
                }

                WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0204));

                //// 준비점검 공지사항 및 판매준비점검 시작
                //sRet = UserCom.RST_ERR;

                //DataTable dtCheckInfo = new DataTable();
                //string sCheckCode = string.Empty;
                //string sAlarmType = string.Empty;

                //// 웹 업무 화면 호출(준비점검, 공지사항, 판매준비점검)
                //// 개점시 준비점검 입력 여부
                //dtCheckInfo = new DataTable();

                //// 0 : 없음, 1 : 로그인, 2 : 개점, 3 : 마감
                //// 공지사항은 POS 옵션에 따라 보여주고 안보여주고를 결정한다.
                //// 개점 요청 일자로 스케줄을 체크한다.
                //dtCheckInfo = (DataTable)m_cStoreCheck.StoreCheckSchedule(PosConst.POS_CHECK_ALARM_TYPE.CHECK_TYPE_NONE, PosKey.MENU_KEY.SALE_OPEN);

                //if (dtCheckInfo.Rows.Count > 0)
                //{
                //    // 공지사항 호출
                //    sRet = WinOpenClose.ShowForm(new string[] { FormManager.FORM_SCH_PREP_STOR_NOTICE, PosKey.MENU_KEY.PREP_STOR_NOTICE, sCheckCode });
                //    if (sRet != UserCom.RST_OK)
                //    {

                //    }
                //}


                // 왕진활현 인터페이스 생성자료 삭제
                if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_CHN_03)             
                {
                    CmUtil.FileDelete(BaseCom.NxDataPath + @"CapitaInterface\possalesdata.txt");

                    // 디렉토리 생성
                    CmUtil.CreateDirectory(BaseCom.NxDataPath + @"CapitaInterface\");
                }


                // 준비점검 공지사항 및 판매준비점검
                sRet = WinOpenClose.EndStoreCheck(PosConst.POS_CHECK_ALARM_TYPE.CHECK_TYPE_NONE, PosKey.MENU_KEY.SALE_OPEN);
                sRet = WinOpenClose.EndStoreCheck(PosConst.POS_CHECK_ALARM_TYPE.CHECK_TYPE_SOD, PosKey.MENU_KEY.SALE_OPEN);

                //// 개점시 준비점검 입력 여부
                //// 1 : 로그인, 2 : 개점, 3 : 마감
                //// 개점 요청 일자로 스케줄을 체크한다.
                //dtCheckInfo = (DataTable)m_cStoreCheck.StoreCheckSchedule(PosConst.POS_CHECK_ALARM_TYPE.CHECK_TYPE_SOD, PosKey.MENU_KEY.SALE_OPEN);

                //if (dtCheckInfo.Rows.Count > 0)
                //{
                //    for (int nLoop = 0; nLoop < dtCheckInfo.Rows.Count; nLoop++)
                //    {
                //        sCheckCode = CmUtil.GetDataRowStr(dtCheckInfo.Rows[nLoop], "CHECK_CD");

                //        if (sCheckCode != "" && sCheckCode != null)
                //        {
                //            sRet = m_cStoreCheck.StoreCheckSaveIrt(sCheckCode, sSaleDate);
                //            if (sRet == UserCom.RST_OK)
                //            {
                //                //continue;
                //            }
                //            else
                //            {
                //                // 이미 등록되어 있다면 해당 체크 코드는 빠져나온다.
                //                continue;
                //            }
                //        }
                //        else
                //        {
                //            continue;
                //        }

                //        if (sCheckCode == "12")
                //        {
                //            // 유통기한 점검 체크리스트
                //            sRet = WinOpenClose.ShowForm(new string[] { FormManager.FORM_EXPIRATION_DATE_CHECK, PosKey.MENU_KEY.EXPIRATION_DATE_CHECK_LIST, PosConst.STORE_CHECK_FLAG.STORE_OPEN_CHECK, sSaleDate, sCheckCode });
                //            if (sRet != UserCom.RST_OK)
                //            {

                //            }
                //        }
                //        else if (sCheckCode == "11")
                //        {
                //            // 식품안전의 날
                //            sRet = WinOpenClose.ShowForm(new string[] { FormManager.FORM_FOOD_SAFETY_DAY_POPUP, PosKey.MENU_KEY.FOOD_SAFETY_DAY_POPUP, PosConst.STORE_CHECK_FLAG.STORE_OPEN_CHECK, sSaleDate, sCheckCode });
                //            if (sRet != UserCom.RST_OK)
                //            {

                //            }
                //        }
                //        else
                //        {
                //            // 위에 설정된 점검코드 외 점검내용은 기본 점검화면을 사용한다.
                //            sRet = WinOpenClose.ShowForm(new string[] { FormManager.FORM_SOD_CHECK, PosKey.MENU_KEY.STORE_CHECK_LIST, PosConst.STORE_CHECK_FLAG.STORE_OPEN_CHECK, sSaleDate, sCheckCode });
                //            if (sRet != UserCom.RST_OK)
                //            {

                //            }
                //        }
                //    }
                //}

                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        #endregion Control Event

        private void btnDate_Click(object sender, EventArgs e)
        {
            try
            {
                string sDate = WinBasic.ShowForm(new string[] { FormManager.FORM_CALENDAR });
                if (sDate != "") txtSaleDate.Text =  m_cPosStatus.Global.DateToCulture(sDate);
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        private void txtSaleDate_Enter(object sender, EventArgs e)
        {
            try
            {
                padInPut.SetActiveControl = (Control)sender;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }
    }
}
