using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.Data;

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

/*-----------------------------------------------------------------------------------------------*/
// 설      명 : 해피포인트 조회,적립
// 작  성  자 : 
// 변경  이력 : 
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Win
{
    public partial class frmPntHappyPoint : frm_PayMainBack
    {

        #region 변수 선언

        private SManager sManager = new SManager();                                 // 이 객체를 통해 업무 Service 호출
        private StateServer StateObject = (StateServer)StateServer.GetInstance();   // StateObject : StateServer Object (객체)
        private PosStatus m_cPosStatus = new PosStatus();                           // 기본정보 참조
        private TranStatus m_cTrnStatus = new TranStatus();                         // 거래정보 참조        
        private DeviceStatus m_cDevStatus = new DeviceStatus();                     // 디바이스 관리
        private PosOLEDevice.DelegateOlePos delegatePos;
        private PosOLEDevice.DelegateIcReader delegateReader;                       // IC리더 콜백
        //#20170918 IC 콜백 함수 변경 start
        //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정.
        /*
        private PosOLEDevice.CallbackIc delegateReaderCardInfo;                     // IC리더 콜백(CardInfo)
        private bool m_bCardInPut;                                                  //카드 입력 중복 방지
        private string m_sIcChip;                                                   //IC CHIP DATA(EMV)
        private string m_InputType = ""; //PosConst.POS_VAN_MASTER.VAN_KEYIN;       //입력구분
        private string m_sCardNo;                                                   //입력 카드 번호
        private string m_sFallDiv;                                                  //FallBack구분
        */
        //#20170918 IC 콜백 함수 변경 end

        private IICReaderUs m_cDeviceICReader = null;
        private ISignPadUs m_cDeviceSignPad = null;
        private IDataProcessUs m_cDataService = null;                               // 거래데이터 합계금액 계산 및 관리
        private IDataCommonUs m_cDataCommon = null;                                 // POS 공통함수 인터페이스
        private IPaymentExpUs m_cHappyPoint = null;

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
        private ISvr2Tran m_cSvr2Tran = null;                                       // 서버시간 동기화
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

        private bool bNotDoubleClik = false;                                        // 더블 클릭 방지용


        //#20180413 웰컴카드 신규기능 추가 start,phj 
        /// <summary>
        /// 0: 일반, 1:웰컴카드에서오픈
        /// </summary>
        private string m_SetClientSearch;
        public string SetClientSearch { set { this.m_SetClientSearch = value; } }
        //#20180413 웰컴카드 신규기능 추가 end,phj

        private string m_sPosMenuKey;
        /// <summary>
        /// POS 기능키
        /// </summary>
        public string SetPosMenuKey { set { this.m_sPosMenuKey = value; } }


        private string m_sHappyPointSave;
        /// <summary>
        /// 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
        /// </summary>
        public string SetHappyPointSave { set { this.m_sHappyPointSave = value; } }

        /// <summary>
        /// 입력구분
        /// </summary>
        private string m_sInPutType = "";
        /// <summary>
        /// 입력데이터
        /// </summary>
        private string m_sInPutData = "";
        /// <summary>
        /// 마스킹데이터
        /// </summary>
        private string m_sInMaskData = "";
        /// <summary>
        /// 카드데이터(암호화)
        /// </summary>
        private string m_sInEncData = "";
        /// <summary>
        /// 서비스코드
        /// </summary>
        private string m_sServiceCode = "";
        /// <summary>
        /// 승인카드번호
        /// </summary>
        private string m_sAppCardNo = "";
        /// <summary>
        /// 대상 금액
        /// </summary>
        private double m_nDestAmt = 0;
        /// <summary>
        /// 조회 성공 여부
        /// </summary>
        private bool m_bSearchSuccess = false;
        /// <summary>
        /// 쿠폰리스트 데이터
        /// </summary>
        private DataTable m_dtGridList;

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
        //고객 구매이력 정보 표시 시점에 상단 MOT 표시
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
        //포인트창 닫히는 시점에 안보이도록 수정 - 불필요해서 소스 주석
        //private DateTime BuyHistTime = new DateTime();
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

        #endregion 변수 선언

        #region 생성자 & 소멸자 & 폼초기화
        public frmPntHappyPoint()
        {
            InitializeComponent();

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

            m_cPosStatus = (PosStatus)StateObject.POS;      // POS 기본정보
            m_cTrnStatus = (TranStatus)StateObject.TRAN;    // POS 거래정보 
            m_cDevStatus = (DeviceStatus)StateObject.DEVICE;

            m_cDeviceICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER);
            m_cDeviceSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD);
            m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
            m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
            m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);

            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
            m_cSvr2Tran = (ISvr2Tran)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SVR2TRAN);
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

            delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent);
            delegateReader = new PosOLEDevice.DelegateIcReader(OnIcReaderCallBack);     // IC리더 콜백
            //#20170918 IC 콜백 함수 변경 start
            //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정.
            //delegateReaderCardInfo = new PosOLEDevice.CallbackIc(OnIcReaderCallBackCardInfo);     // IC리더 콜백(CardInfo)
            //#20170918 IC 콜백 함수 변경 end
        }

        private void frmPointHappyPoint_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();

            if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "0")   // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
            {
                // 고객화면 캠페인 컨텐츠 표시
                ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                cCampaingMain.CustDisplayCampaign(ItemConst.CPI_CUST_PAY_TYPE.HP_SAVE);
            }
            if (txtCardNo.ReadOnly == false)
            {
                tmrIcCard.Tag = "";
                tmrIcCard.Enabled = true;   // IC리더 콜백 설정
            }

            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
            //고객 구매이력 정보 표시 시점에 상단 MOT 표시
            // 타이머 호출
            //적용시 true
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
            //포인트창 닫히는 시점에 안보이도록 수정 - 불필요해서 소스 주석
            //tmrDateTime.Enabled = true;
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

            //*****************************************************************************
            // (2017.11.01) 해피포인트 제휴할인 선리딩 처리
            //-----------------------------------------------------------------------------
            // - 만약 해피포인트 카드 번호가 전역변수에 저장되어 있을 경우
            //   <- 전역변수 : m_cPosStatus.Sale.strHappyPointCardNo
            //   오버로딩된 해피포인트 조회 함수(SearchTxtInPut)를 호출한다.
            // - 오버로딩된 해피포인트 조회 함수에서는 해피포인트 카드번호를 표시/조회한다.
            //-----------------------------------------------------------------------------
            // - 오버로딩 함수 : SearchTxtInPut(Column.TR_ETC.DATA _cEtcItem, string _strHappyPointCardNo, string _strDiv)
            //*****************************************************************************
            #region 해피포인트 제휴할인 선리딩 처리


            //#20180619 웰컴카드 개선사항 start
            //기존
            //if (m_cPosStatus.Sale.strHappyPointCardNo != "")
            //변경
            if (m_cPosStatus.Sale.strHappyPointCardNo != "" && m_SetClientSearch == "0")
            //#20180619 웰컴카드 개선사항 end
            
            {
                //============================================================================
                // 오버로딩된 해피포인트 조회 함수 호출
                //----------------------------------------------------------------------------
                // - 파라미터 : Column.TR_ETC.DATA, 해피포인트카드번호, 조회까지 실행할지 여부
                //============================================================================
                #region 오버로딩된 해피포인트 조회 함수 호출
                //SearchTxtInPut(null, m_cPosStatus.Sale.strHappyPointCardNo, "");        // 카드번호만 표시
                //SearchTxtInPut(null, m_cPosStatus.Sale.strHappyPointCardNo, "조회");    // 조회까지 수행
                SearchTxtInPut(null, m_cPosStatus.Sale.strHappyPointCardNo, btnEnter);    // 등록까지 수행
                #endregion
            }
            #endregion
        }

        private void frmPointHappyPoint_Activated(object sender, EventArgs e)
        {
            PosOLEDevice.SetEventHandle(delegatePos); 
        }

        private void frmPointHappyPoint_Deactivate(object sender, EventArgs e)
        {
            PosOLEDevice.SetEventHandle(null);
        }

        private void frmPointHappyPoint_FormClosing(object sender, FormClosingEventArgs e)
        {
            tmrIcCard.Tag = "CLOSE";
            //// 마우스(이중클릭방지)
            //Point nPoint = System.Windows.Forms.Cursor.Position;
            //Cursor.Clip = new System.Drawing.Rectangle(1024, 0, 1, 1);
            //this.Update();

            UnRegIcCallback();          // IC리더 콜백 해지
            InDataToZeroFill();


            //#20180413 웰컴카드 신규기능 추가 start,phj
            //기존
            //if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT_SCH) FormManager.SetFormAllControlMove(this, 216, 123);
            //변경
            if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT_SCH && m_SetClientSearch != "2") FormManager.SetFormAllControlMove(this, 216, 123);
            //#20180413 웰컴카드 신규기능 추가 end,phj


            UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text);

            //// 마우스(이중클릭방지)
            //Cursor.Clip = Screen.PrimaryScreen.Bounds;
            //Cursor.Position = nPoint;

            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
            //고객 구매이력 정보 표시 시점에 상단 MOT 표시
            // 타이머 호출
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
            //포인트창 닫히는 시점에 안보이도록 수정 - 불필요해서 소스 주석
            //tmrDateTime.Enabled = false;
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
            //포인트창 닫히는 시점에 안보이도록 수정
            //고객 구매이력 화면 미표시
            pnlBuyHistMot.Visible = false;
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
        }

        /// <summary>
        /// 폼 컨트롤 초기화
        /// </summary>
        private void InitControl()
        {
            try
            {
                // 이미지 로딩 처리
                
                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);

                btnEnter.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor);

                btnUp.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_14X9_UP1_BASIC);
                btnUp.ImageAlign = ContentAlignment.MiddleCenter;
                btnUp.BorderStyle = BorderStyle.None;
                btnDown.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_14X9_DOWN1_BASIC);
                btnDown.ImageAlign = ContentAlignment.MiddleCenter;
                btnDown.BorderStyle = BorderStyle.None;

                if (btnUp.Image != null) btnUp.Text = "";
                if (btnDown.Image != null) btnDown.Text = "";

                btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE);
                if (btnExit.Image != null) btnExit.Text = "";

                btnCatApp.Visible = false;

                //#20180524 구매이력조회 상단 패널 사이즈 조정 start,phj
                //적용 시 주석처리하고 아래 것으로 변경
                //pnlBuyHistMot.BackColor = Color.FromArgb(70, 86, 98);
                //pnlBuyHistMot.ForeColor = Color.White;
                //lblBuyHistMot.BackColor = Color.FromArgb(70, 86, 98);
                //lblBuyHistMot.ForeColor = Color.White;

                //적용 시 주석해제 
                pnlBuyHistMot.BackColor = Color.FromArgb(255, 255, 128);
                pnlBuyHistMot.ForeColor = Color.Black;
                lblBuyHistMot.BackColor = Color.FromArgb(255, 255, 128);
                lblBuyHistMot.ForeColor = Color.Black;
                //#20180524 구매이력조회 상단 패널 사이즈 조정 end,phj

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
                FormManager.SetControlSize(pnlBuyHist, padInPut.Location.X, padInPut.Location.Y, padInPut.Width, padInPut.Height);
                pnlBuyHist.Visible = false;

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                pnlBuyHistMot.Visible = false; 
                FormManager.SetControlSize(pnlBuyHistMot, 20, 21, 983, 96, 16);
                FormManager.SetControlSize(lblBuyHistMot, 20, 21, 983, 96, 16);
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510
                 
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

                //#15525 고객구매이력 수정 요청 start
                //VIP 여부 안내 표시
                pnlBuyHistVip.Visible = false;
                FormManager.SetControlSize(pnlBuyHistVip, 311, 123, 402, 400);
                //pnlBuyHistVip.Location = new Point(290, 50);
                //#15525 고객구매이력 수정 요청 end

                //#20180413 웰컴카드 신규기능 추가 start, 20180621
                //컴퍼넌트 visible 초기화
                lblPayAmt.Visible = true;
                lblTotSavePoint.Visible = true;
                //lblUsablePoint.Visible = true;
                lblBasicPoint.Visible = true;
                lblAddPoint.Visible = true;
                lblAddPointNm.Visible = true;
                lblBox2.Visible = true;
                lblBox3.Visible = true;
                //lblBox4.Visible = true;
                lblBox5.Visible = true;
                lblBox6.Visible = true;
                ////////////////////////////////////////
                label8.Visible = true;
                ////////////////////////////////////////
                txtPayAmt.Visible = true;
                txtTotSavePoint.Visible = true;
                txtUsablePoint.Visible = true;
                txtBasicPoint.Visible = true;
                txtAddPoint.Visible = true;
                ////////////////////////////////////////
                gridList.Visible = true;
                btnUp.Visible = true;
                btnDown.Visible = true;
                ////////////////////////////////////////              
                btnPrint.Visible = true;
                btnPointUse.Visible = true;
                btnCatApp.Visible = false;
                btnEnter.Visible = true;


                lblWelcom.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1160);
                //#20180628 멤버십카드 발급 버튼 명칭 메시지 처리 start
                btnWccIssue.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1131);
                //#20180628 멤버십카드 발급 버튼 명칭 메시지 처리 end

                if (PosMstManager.GetPosOption(POS_OPTION.OPT516) == "1" && 
                    m_SetClientSearch == "0" &&
                    m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT)
                {
                    lblWelcom.Visible = true;
                    lblBox7.Visible = true;
                    txtWccIssue.Visible = true;
                    txtWccIssue.Text = "";
                    btnWccIssue.Visible = false;
                }
                else
                {
                    lblWelcom.Visible = false;
                    lblBox7.Visible = false;
                    txtWccIssue.Visible = false;
                    txtWccIssue.Text = "";
                    btnWccIssue.Visible = false;
                }

                lblInfo.Visible = false;
                lblInfo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1158);
                lblInfo.Location = new System.Drawing.Point(228, 235);

                //#20180413 웰컴카드 신규기능 추가 end, 20180621

                if (m_sPosMenuKey != PosKey.MENU_KEY.HAPPY_POINT || m_sHappyPointSave != "1")
                {
                    //#20180413 웰컴카드 신규기능 추가 start,phj
                    //기존
                    /*
                    FormManager.SetControlSize(gridList, 238, 350, 374, 106);
                    FormManager.SetControlSize(btnUp, 615, 350, 31, 51);
                    FormManager.SetControlSize(btnDown, 615, 404, 31, 51);
                    gridList.Visible = true;
                    btnUp.Visible = true;
                    btnDown.Visible = true;
                    lblBasicPoint.Visible = false;
                    lblAddPoint.Visible = false;
                    lblAddPointNm.Visible = false;
                    txtBasicPoint.Visible = false;
                    txtAddPoint.Visible = false;
                    //lblLine06.Visible = false;
                    //lblLine07.Visible = false;
                    lblBox5.Visible = false;
                    lblBox6.Visible = false;
                    */

                    //변경
                    if (m_SetClientSearch != "2")
                    {
                        FormManager.SetControlSize(gridList, 238, 350, 374, 106);
                        FormManager.SetControlSize(btnUp, 615, 350, 31, 51);
                        FormManager.SetControlSize(btnDown, 615, 404, 31, 51);
                        gridList.Visible = true;
                        btnUp.Visible = true;
                        btnDown.Visible = true;
                        lblBasicPoint.Visible = false;
                        lblAddPoint.Visible = false;
                        lblAddPointNm.Visible = false;
                        txtBasicPoint.Visible = false;
                        txtAddPoint.Visible = false;
                        //lblLine06.Visible = false;
                        //lblLine07.Visible = false;
                        lblBox5.Visible = false;
                        lblBox6.Visible = false;
                    }
                    //#20180413 웰컴카드 신규기능 추가 end,phj
                }
                else
                {
                    gridList.Visible = false;
                    btnUp.Visible = false;
                    btnDown.Visible = false;

                    lblBasicPoint.Visible = true;
                    lblAddPoint.Visible = true;
                    lblAddPointNm.Visible = true;
                    txtBasicPoint.Visible = true;
                    txtAddPoint.Visible = true;
                    //lblLine06.Visible = true;
                    //lblLine07.Visible = true;
                    lblBox5.Visible = true;
                    lblBox6.Visible = true;

                    if (m_cDevStatus.CatTerminal.UseYn == true)
                        btnCatApp.Visible = true;
                }

                if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT_SCH)
                {
                    //#20180413 웰컴카드 신규기능 추가 start,phj
                    //기존
                    /*
                    this.Size = new Size(788, 402);
                    picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S);
                    FormManager.SetFormAllControlMove(this, -216, -123);
                    FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser);

                    // 해피포인트 조회
                    lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0365);

                    lblPayAmt.Visible = false;
                    txtPayAmt.Visible = false;
                    lblBox2.Visible = false;

                    btnPrint.Visible = true;
                    btnEnter.Visible = false;
                    */

                    //변경
                    //m_SetClientSearch  1: 영업메뉴에서오픈, 2:결제화면에서오픈

                    if (m_SetClientSearch == "2")
                    {
                        this.Location = new Point(0, 50);
                        this.Size = new Size(1024, 525);
                        picBack.Size = new Size(1024, 525);

                        //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
                        //기존
                        //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.PAY_MAIN_BACKGROUND);
                        //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

                    }
                    else if (m_SetClientSearch == "1")
                    {
                        this.Size = new Size(788, 402);

                        //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
                        //기존
                        //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S);
                        //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

                        FormManager.SetFormAllControlMove(this, -216, -123);
                        FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser);
                    }
                    else
                    {
                        this.Size = new Size(788, 402);

                        //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
                        //기존
                        //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S);
                        //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

                        FormManager.SetFormAllControlMove(this, -216, -123);
                        FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser);

                        // 해피포인트 조회
                        lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0365);

                        lblPayAmt.Visible = false;
                        txtPayAmt.Visible = false;
                        lblBox2.Visible = false;

                        btnPrint.Visible = true;
                        btnEnter.Visible = false;
                    }
                    //#20180413 웰컴카드 신규기능 추가 end,phj
                }
                else
                {
                    this.Location = new Point(0, 50);
                    this.Size = new Size(1024, 525);
                    picBack.Size = new Size(1024, 525);

                    //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
                    //기존
                    //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.PAY_MAIN_BACKGROUND);
                    //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

                    if (m_sHappyPointSave == "1")   // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                    {
                        // 해피포인트 적립
                        lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0108);

                        btnEnter.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0134);
                    }
                    else
                    {
                        // 해피포인트 카드등록
                        lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0365);

                        btnEnter.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0126);

                        // 고객화면 캠페인 컨텐츠 표시
                        ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                        cCampaingMain.CustDisplayCampaign(ItemConst.CPI_CUST_PAY_TYPE.HP_SAVE);
                    }

                    lblPayAmt.Visible = true;
                    txtPayAmt.Visible = true;
                    lblBox2.Visible = true;

                    btnPrint.Visible = false;
                    btnEnter.Visible = true;

                }

                lblCardNo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0051);
                lblPayAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0098);
                //#20180413 웰컴카드 신규기능 추가 start, 20180621
                //기존
                /*
                lblTotSavePoint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0071);
                lblUsablePoint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0070);
                */
                //변경
                lblTotSavePoint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1159);
                //#20180413 웰컴카드 신규기능 추가 end, 20180621

                lblBasicPoint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0728);
                lblAddPoint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0729);
                lblAddPointNm.Text = "";

                btnIcCard.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0132);
                btnRfCard.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0580);
                btnPopCard.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0878);

                btnPinPad.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0097);
                btnPrint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0257);
                btnSearch.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0004);
                btnCatApp.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0854);

                 
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
                btnCpnSend.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1122);
                csmLabel5.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1123);
                csmLabel6.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1124);
                csmLabel7.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1125);
                csmLabel8.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1126);
                csmLabel9.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1127);
                csmLabel10.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1128);
                csmLabel14.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1129);
                csmLabel15.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1130);
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

                //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 start,phj
                //주석
                //btnPointUse.Visible = false;

                btnPointUse.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0629);

                if ((m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT) || (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT_USE))
                {
                    btnPointUse.Visible = true;
                }
                else
                {
                    btnPointUse.Visible = false;
                }
                //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 end,phj

                //#20180413 웰컴카드 신규기능 추가 start,phj

                //#20180619 웰컴카드 개선사항 start
                //기존
                //if (m_SetClientSearch != "")
                //변경
                if (m_SetClientSearch != "0")
                //#20180619 웰컴카드 개선사항 end                
                {
                    // 해피포인트 고객등록 대상 조회
                    lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1132);

                    //#20180413 웰컴카드 신규기능 추가 start, 20180621
                    lblInfo.Visible = true;
                    lblInfo.BringToFront();
                    //#20180413 웰컴카드 신규기능 추가 end, 20180621

                    // 웰컴카드 발급화면에서 열었을 경우 아래 컴포넌트는 visible false 처리
                    lblPayAmt.Visible = false;
                    lblTotSavePoint.Visible = false;
                    //#20180413 웰컴카드 신규기능 추가 start, 20180621
                    //lblUsablePoint.Visible = false;
                    //#20180413 웰컴카드 신규기능 추가 end, 20180621
                    lblBasicPoint.Visible = false;
                    lblAddPoint.Visible = false;
                    lblAddPointNm.Visible = false;
                    lblBox2.Visible = false;
                    lblBox3.Visible = false;
                    //#20180413 웰컴카드 신규기능 추가 start, 20180621
                    //lblBox4.Visible = false;
                    //#20180413 웰컴카드 신규기능 추가 end, 20180621
                    lblBox5.Visible = false;
                    lblBox6.Visible = false;
                    ////////////////////////////////////////
                    label8.Visible = false;
                    ////////////////////////////////////////
                    txtPayAmt.Visible = false;
                    txtTotSavePoint.Visible = false;
                    txtUsablePoint.Visible = false;
                    txtBasicPoint.Visible = false;
                    txtAddPoint.Visible = false;
                    ////////////////////////////////////////
                    gridList.Visible = false;
                    btnUp.Visible = false;
                    btnDown.Visible = false;
                    ////////////////////////////////////////              
                    btnPrint.Visible = false;
                    btnPointUse.Visible = false;
                    btnCatApp.Visible = false;
                    btnEnter.Visible = false;

                    //#20180619 웰컴카드 개선사항 start
                    //웰컴카드 해피포인트 조회 시 하단의 '조회'버튼을 '등록'으로 명칭 변경
                    btnSearch.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0126);
                    //#20180619 웰컴카드 개선사항 end
                }
                //#20180413 웰컴카드 신규기능 추가 end,phj
                
                // 기능 버튼 설정 체크
                FormManager.SetbtnMenu(txtCardNo, m_cDevStatus.ICReader.UseYn, btnIcCard, btnRfCard, btnPopCard, btnPinPad);

                //20171219_적립대상금액 체크 수정 기존_hs start
                //m_nDestAmt = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);         // 적립 대상 금액
                //txtPayAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_nDestAmt);
           
                //#20171221 적립대상금액 계산 변경 start, 20171222
                //기존
                //m_nDestAmt = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);           // 적립 대상 금액
                //변경
                m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);           // 적립 대상 금액
                //#20171221 적립대상금액 계산 변경 end, 20171222

                // 캠페인(해피포인트 적립) 설정 처리
                ICampaignUs cCampaingMainCheck = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                cCampaingMainCheck.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, (Column.TR_ETC.DATA)m_cHappyPoint.GetPayment(new string[] { }));
                
                //#20171221 적립대상금액 계산 변경 start
                //기본적립대상 + 추가적립대상 둘다 있는 경우 기본적립대상 금액만 표시되는 증상
                //기존
                //m_nDestAmt = m_cTrnStatus.Head.AftSavePoint;                                           // 적립대상금액 - 캠페인적립대상금액이 있을 경우 변경 
                //변경
                //#20171221 적립대상금액 계산 변경 start, 20171222
                m_nDestAmt = m_cTrnStatus.Head.AftSavePoint;
                //#20171221 적립대상금액 계산 변경 end, 20171222

                if (m_cTrnStatus.Head.AftSaveAddInfo != "")
                {
                    //#20180312 추가적립 캠페인 대상상품 적립대상금액 2배 표시 되는 증상 수정 start
                    //기존
                    /*
                    string sAddHpAccumeYN = m_cTrnStatus.Head.AftSaveAddInfo.ToString().Substring(25, 1);
                    double sAddHpAccumeAmt = CmUtil.DoubleParse(m_cTrnStatus.Head.AftSaveAddInfo.ToString().Substring(10, 15));

                    if (sAddHpAccumeYN == "Y")
                    {
                        m_nDestAmt = m_nDestAmt + sAddHpAccumeAmt;                         // 적립대상금액 - 캠페인적립대상금액이 있을 경우 변경 
                    }
                    */
                    //변경
                    string sAddHpCpiCd = m_cTrnStatus.Head.AftSaveAddInfo.ToString().Substring(0, 10).Trim();
                    string sAddHpAccumeYN = m_cTrnStatus.Head.AftSaveAddInfo.ToString().Substring(25, 1).Trim();
                    double sAddHpAccumeAmt = CmUtil.DoubleParse(m_cTrnStatus.Head.AftSaveAddInfo.ToString().Substring(10, 15).Trim());

                    if (sAddHpAccumeYN == "Y" && sAddHpCpiCd == "")
                    {
                        m_nDestAmt = m_nDestAmt + sAddHpAccumeAmt;                         // 적립대상금액 - 캠페인적립대상금액이 있을 경우 변경 
                    }
                    //#20180312 추가적립 캠페인 대상상품 적립대상금액 2배 표시 되는 증상 수정 end
                }
                //#20171221 적립대상금액 계산 변경 end

                txtPayAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_nDestAmt);
                //20171219_적립대상금액 체크 수정 기존_hs end 

                InitializeGrid();
                InitPayMainBack(m_cPosStatus, m_cDataCommon, m_sPosMenuKey, PosConst.MOT_MSG_TYPE.PAY_STEP_1, "");

                ClearCardInfo();                // 카드 입력 정보 클리어
                txtUsablePoint.ForeColor = Color.Red;
                bNotDoubleClik = false;
                
                // 무결성 실패후 진행시 오류 메시지 표시
                if (m_cDevStatus.ICReader.UseYn == true)     // 여신전문금융업법 적용여부 체크
                {
                    //#20171208, RF버튼 선택 시에만 서명패드 무결성 체크하도록 수정 Start
                    /*(if (m_cDevStatus.ICReader.Integrity_IC_Status != true && m_cDevStatus.ICReader.UseYn == true && m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn == true) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0388);
                    else
                    {
                        if (m_cDevStatus.ICReader.Integrity_IC_Status != true && m_cDevStatus.ICReader.UseYn == true) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0384);
                        if (m_cDevStatus.ICReader.Integrity_SignPad_Status != true && m_cDevStatus.SignPad.UseYn == true) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0385);
                    }*/
                    if (m_cDevStatus.ICReader.Integrity_IC_Status != true && m_cDevStatus.ICReader.UseYn == true) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0384);
                    //#20171208, RF버튼 선택 시에만 서명패드 무결성 체크하도록 수정 End
                }

                // 해피포인트 카드 등록 여부 체크
                ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
                foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
                {
                    if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;

                    if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
                    {
                        //m_sInPutType = cEtcItem.OCCUR_ENTRY_05;     // 입력구분
                        //m_sInMaskData = cEtcItem.OCCUR_ENTRY_01;    // 마스킹
                        //m_sInEncData = cEtcItem.CanFiller1;         // 카드데이터
                        //m_sInPutData = cEtcItem.CanFiller3;         // 입력데이터
                        //m_sAppCardNo = cEtcItem.OCCUR_ENTRY_14;     // 승인카드번호

                        m_sInPutType = cEtcItem.OCCUR_ENTRY_05;      // 입력구분

                        
                        //#12326 PC 서울역SW_해피포인트 마그네틱 포인트 적립시에 에러 발생 start, 20171109 phj
                        //기존
                        //m_sInPutData = cEtcItem.OCCUR_ENTRY_14;      // 입력데이터
                        //변경
                        m_sInPutData = cEtcItem.CanFiller3;      // 입력데이터
                        //#12326 PC 서울역SW_해피포인트 마그네틱 포인트 적립시에 에러 발생 end, 20171109 phj

                        m_sInMaskData = cEtcItem.OCCUR_ENTRY_01;     // 마스킹
                        m_sInEncData = cEtcItem.CanFiller1;          // 카드데이터
                        m_sAppCardNo = cEtcItem.OCCUR_ENTRY_14;      // 승인카드번호


                        txtCardNo.Value = m_sInPutData;
                        SearchTxtInPut(cEtcItem);
                        break;
                    }
                }

                txtCardNo.Value = m_sInPutData;

                if (m_sInPutData == "")
                {
                    btnSearch.Enabled = true;
                    btnIcCard.Enabled = true;
                    btnRfCard.Enabled = true;  
                    btnPinPad.Enabled = true;

                    txtCardNo.ReadOnly = false;

                    // 스마일페이 등록 여부 체크
                    ArrayList alTrPay = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
                    foreach (Column.TR_PAYMENT.DATA cPayItem in alTrPay)
                    {
                        if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;

                        //#20170731, 해피기프트카드(코나머니) 개발 Start, srlee
                        /*if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.SMILE_PAY)
                        {
                            txtCardNo.Value = cPayItem.CanFiller2.Trim();
                            break;
                        }*/

                        if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.SMILE_PAY)
                        {
                            txtCardNo.Value = cPayItem.CanFiller2.Trim();
                            break;
                        }
                        //#20171018, 해피기프트(코나머니) 결제코드(신용->선불) 변경 Start, srlee
                        else if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PPCARD_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PPCARD.HPGIFT_CARD && cPayItem.CanFiller2 != "")
                        //#20171018, 해피기프트(코나머니) 결제코드(신용->선불) 변경 End, srlee
                        {
                            txtCardNo.Value = cPayItem.CanFiller2.Trim();
                        }
                        //#20170731, 해피기프트카드(코나머니) 개발 End, srlee
                    }
                }
                else
                {
                    btnSearch.Enabled = false;
                    btnIcCard.Enabled = false;
                    btnRfCard.Enabled = false;
                    btnPinPad.Enabled = false;

                    txtCardNo.ReadOnly = true;
                }

                if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "1")   // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                {
                    if (m_sInPutData == "")
                        txtCardNo.Select();
                    else
                        txtPayAmt.Select();
                }
                else
                {
                    txtCardNo.Select();
                }
                txtPayAmt.ReadOnly = true;
            }
            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>
        private void InitializeGrid()
        {
            try
            {
                gridList.CsmGridColumnHeadersFont = new Font(m_cPosStatus.Base.FONT, 11, gridList.CsmGridColumnHeadersFont.Style);

                //DataGridView 자체의 컬럼 헤더 Visible 여부
                gridList.CsmGridColumnHeadersVisible = true;
                //DataGridView 자체의 컬럼 헤더 높이
                gridList.CsmGridColumnHeadersHeight = 34;
                gridList.CsmGridRowsHeight = 35;
                //그리드의 컬럼 수
                gridList.CsmGridColumnCount = 4;
                //그리드의 한 화면에 보이는 로우수
                gridList.CsmGridShowPageRowsCount = 2;

                gridList.CsmGridSetHeaderBackColor(236, 238, 239);                             //그리드 헤더 배경색
                gridList.CsmGridDefaultRowBackColor = Color.FromArgb(255, 255, 255);           //그리드 홀수(Default)행의 배경색 지정
                gridList.CsmGridAlternateRowBackColor = Color.FromArgb(251, 253, 255);         //그리드 짝수(Alternate)행의 배경색 지정
                gridList.CsmGridBackGroundColor = Color.FromArgb(251, 253, 255);               //기본 백그라운드 컬러
                gridList.CsmGridHighlightColor = Color.FromArgb(255, 251, 211);                //그리드 선택 백 컬러
                gridList.CsmGridHighlightTextColor = Color.Black;                              //그리드 선택 글자 컬러

                //각 컬럼별 이름 지정
                gridList.CsmGridColumnName(0, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0139));
                gridList.CsmGridColumnName(1, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0140));
                gridList.CsmGridColumnName(2, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0141));
                gridList.CsmGridColumnName(3, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0142));

                //컬럼넓이 지정
                gridList.CsmGridSetColumnWidth(new int[] { 0, 184, 95, 95 });
                //gridList.CsmGridSetColumnWidth(new int[] { 100, 160, 76, 76 });

                //컬럼 정렬 0:왼쪽, 1:가운데, 2:오른쪽
                gridList.CsmGridAlignment(new int[] { 0, 0, 0, 0 });

                m_dtGridList = new DataTable("GRID_LIST");
                m_dtGridList.Columns.Add(new DataColumn("COUPON_CD", typeof(string)));
                m_dtGridList.Columns.Add(new DataColumn("COUPON_NM", typeof(string)));
                m_dtGridList.Columns.Add(new DataColumn("START_DT", typeof(string)));
                m_dtGridList.Columns.Add(new DataColumn("END_DT", typeof(string)));
                m_dtGridList.Clear();
            }
            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>
        private void ClearCardInfo()
        {
            try
            {
                m_sInPutType = "";      // 입력구분
                m_sInPutData = "";      // 입력데이터
                m_sInMaskData = "";     // 마스킹
                m_sInEncData = "";      // 카드데이터
                m_sServiceCode = "";    // 서비스코드
                m_sAppCardNo = "";      // 승인카드번호

                txtUsablePoint.Text = "";
                txtTotSavePoint.Text = "";
                txtBasicPoint.Text = "";
                txtAddPoint.Text = "";

                m_bSearchSuccess = false;
                m_dtGridList.Clear();
                gridList.CsmGridDataSource = m_dtGridList;

                txtPayAmt.ReadOnly = true;
            }
            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

        //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 start,phj
        /// <summary>
        /// 해피포인트 사용화면 오픈
        /// </summary>
       
        private void HappyPointUseForm()
        {
            try
            {
                frmPntHappyPointUse fForm = (frmPntHappyPointUse)FormManager.GetForm(FormManager.FORM_PAY_POINT_HAPPY_POINT_USE);
                if (fForm == null)
                {
                    fForm = new frmPntHappyPointUse();

                    FormManager.AddForm(FormManager.FORM_PAY_POINT_HAPPY_POINT_USE, fForm);
                }
                fForm.SetPosMenuKey = PosKey.MENU_KEY.HAPPY_POINT_USE; //00078;
                fForm.ShowDialog();
                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);
            }
        }
        
        //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 end,phj

        #region 버튼 입력 처리
        /// <summary>
        /// 버튼 입력 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnProc_Click(object sender, EventArgs e)
        {
            try
            {
                if (bNotDoubleClik) return;
                bNotDoubleClik = true;

                if (((Cosmos.UI.CsmButton)sender) == btnIcCard)               // 카드입력
                {
                    if (GetIcCardData(e != null ? true : false) == true)
                    {
                        bNotDoubleClik = false;
                        txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);
                    }
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnRfCard)        // RF카드
                {
                    UnRegIcCallback(); // IC리더 콜백 해지
                    if (GetRfCardData() == true)
                    {
                        bNotDoubleClik = false;
                        txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);
                    }
                    if (txtCardNo.Value == "") tmrIcCard.Enabled = true;
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnPopCard)        // POP카드
                {
                    UnRegIcCallback(); // IC리더 콜백 해지
                    if (GetPopCardData() == true)
                    {
                        bNotDoubleClik = false;
                        txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);
                    }
                    if (txtCardNo.Value == "") tmrIcCard.Enabled = true;
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnPinPad)        // 핀패드
                {
                    UnRegIcCallback(); // IC리더 콜백 해지
                    if (GetPinPadData() == true)
                    {
                        bNotDoubleClik = false;
                        txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);
                    }
                    if (txtCardNo.Value == "") tmrIcCard.Enabled = true;
                }
                //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 start,phj
                //주석
                else if (((Cosmos.UI.CsmButton)sender) == btnPointUse)        // 사용
                {
                    //#20180219 통신사할인 후 포인트 사용할 수 없도록 수정 start,phj 
                    if (m_cDataCommon.PayDcDuplicationCheck(ItemConst.TR_ITEM_ID.POINT_ITEM, ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT, true) == false) return;
                    //#20180219 통신사할인 후 포인트 사용할 수 없도록 수정 end,phj

                    //자동등록 후 [사용] 화면 열리도록 함.
                    if (txtCardNo.Value != "")
                    {
                        CompleteTxtInPut(2);
                    }
                    else
                    {
                        HappyPointUseForm();
                    }
                }
              
                //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 end,phj
                else if (((Cosmos.UI.CsmButton)sender) == btnSearch)        // 조회
                {
                    //#20180413 웰컴카드 신규기능 추가 start, 20180621
                    //기존
                    //SearchTxtInPut(null);           // 조회
                    //변경
                    bool bSch = SearchTxtInPut(null);           // 조회
                    //#20180413 웰컴카드 신규기능 추가 end, 20180621

                    //#20180413 웰컴카드 신규기능 추가 start,phj

                    //#20180619 웰컴카드 개선사항 start
                    //기존
                    //if (m_SetClientSearch != "")
                    //변경

                    //#20180413 웰컴카드 신규기능 추가 start, 20180621
                    //기존
                    //if (m_SetClientSearch != "0")
                    //변경
                    if (m_SetClientSearch != "0" && bSch == true)
                    //#20180413 웰컴카드 신규기능 추가 end, 20180621

                    //#20180619 웰컴카드 개선사항 end  
                    {
                        bNotDoubleClik = false;

                        this.DialogResult = DialogResult.OK;
                        this.Close();
                        return;
                    }
                    //#20180413 웰컴카드 신규기능 추가 end,phj
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnEnter)         // 승인
                {
                    CompleteTxtInPut(0);
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnCatApp)        // Cat단말기 승인
                {
                    CompleteTxtInPut(1);
                }

                //#20180413 웰컴카드 신규기능 추가 start, 20180621
                else if (((Cosmos.UI.CsmButton)sender) == btnWccIssue)        // 웰컴카드 발급
                {
                    WelcomeCard_Issue();
                }
                //#20180413 웰컴카드 신규기능 추가 end, 20180621

                else if (((Cosmos.UI.CsmButton)sender) == btnPrint)         // 출력
                {
                    PrintTxtInPut();
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnUp)
                {
                    gridList.CsmGridScroll("UP");
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnDown)
                {
                    gridList.CsmGridScroll("DOWN");
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnExit)
                {
                    ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
                    foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
                    {
                        if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;

                        if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
                        {
                            cEtcItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
                            if (m_sHappyPointSave != "1")               // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록))
                            {
                                // 캠페인 취소 처리
                                ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                                cCampaingMain.ExecuteCampaignPluHappyPoint("", false, "", "", "", "");  // 상품 캠페인 계산
                            }
                        }
                    }
                    bNotDoubleClik = false;

                    this.DialogResult = DialogResult.Cancel;
                    this.Close();
                    return;
                }
                padInPut.SetActiveFocus();
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
                bNotDoubleClik = false;
            }
            bNotDoubleClik = false;
        }
        #endregion

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
        #region 고객 구매이력 정보 버튼 입력 처리
        /// <summary>
        /// 고객 구매이력 정보 버튼 입력 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBuyList_Click(object sender, EventArgs e)
        {
            try
            {
                if (((Cosmos.UI.CsmButton)sender) == btnBuyListCls)
                {
                    pnlBuyHist.Visible = false;

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                    //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                    pnlBuyHistMot.Visible = false;
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                }
                else if (((Cosmos.UI.CsmButton)sender) == btnCpnSend)
                {
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180508
                    //[쿠폰발송] 버튼 클릭시 '쿠폰발송 기능은 추후 오픈 예정입니다.' 팝업 출력

                    //#20180605 해피쿠폰 발송 해당 옵션 체크 기능 제외 start
                    /*
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT513) != "1")
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0785);
                        return;
                    }
                    */
                    //#20180605 해피쿠폰 발송 해당 옵션 체크 기능 제외 end

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180508

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                    //적용시 주석 해제
                    
                    if (m_cPosStatus.Mst.HpyCokStorYn != "1")
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0786);
                        return;
                    }

                    if (m_cPosStatus.Mst.CpnSendYn != "1")
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0787);
                        return;
                    }

                    if (m_cPosStatus.Sale.sRegularYN != "Y")
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0788);
                        return;
                    }
                    
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180502
                    //기능키 추가 후 권한 체크 기능 적용
                    if (WinBasic.CheckMenuKeyAuth(PosKey.MENU_KEY.HPYCPN_SEND) == false) return;      // 기능키 판매원 권한 체크
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180502

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528
                    //쿠폰 발송 횟수 제한 기능

                    //저장된 쿠폰 발송 횟수 가져오기
                    string sCpnSendCnt = m_cDataCommon.CpnSendCntSearch();

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
                    //저장되지 않은 쿠폰 발송 횟수 가져오기
                    int iCpnSendCnt = 0;
                    ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);     // 기타 내역 받아 오기
                    foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
                    {
                        if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;

                        //해피쿠폰 발송
                        if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.HAPPYCPN_SEND)
                        {
                            iCpnSendCnt = iCpnSendCnt + 1;
                        }
                    }
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
                    //기존
                    //if (CmUtil.IntParse(m_cPosStatus.Mst.CpnSendLimitCnt) <= CmUtil.IntParse(sCpnSendCnt))
                    //변경
                    if (CmUtil.IntParse(m_cPosStatus.Mst.CpnSendLimitCnt) <= CmUtil.IntParse(sCpnSendCnt) + iCpnSendCnt)
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
                    {
                        WinManager.ConfirmMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0789), m_cPosStatus.Mst.CpnSendLimitCnt));
                        //WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0789);
                        return;
                    }
                    
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528


                    WinPay.ShowForm(new string[] { FormManager.FORM_CPN_SEND, m_sInPutType, m_sInMaskData, m_sInEncData, m_sServiceCode, m_sAppCardNo });
                }
                else if (((Cosmos.UI.CsmButton)sender) == btnHpCok)
                {
                    pnlBuyHist.Visible = false;

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                    //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                    pnlBuyHistMot.Visible = false;
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                }
            }
            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 고객 구매이력 정보 라벨 입력 처리
        /// <summary>
        /// 고객 구매이력 정보 버튼 입력 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lblBuyList_Click(object sender, EventArgs e)
        {
            try
            {
                pnlBuyHist.Visible = false;

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                pnlBuyHistMot.Visible = false;
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

            }
            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

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end


        #region 텍스트박스 키 입력 이벤트 처리
        /// <summary>
        /// 텍스트박스 키 입력 이벤트 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncValue"></param>
        private void txtEditBox_EditBoxKeyDownEvent(object sender, string sFuncValue)
        {
            try
            {
                if (bNotDoubleClik) return;
                bNotDoubleClik = true;

                try
                {
                    if (sFuncValue == PosKey.MENU_KEY.ENTER)
                    {
                        if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo)
                        {
                            if (txtCardNo.Text == "")
                            {
                                if (GetIcCardData(true) == false)
                                {
                                    bNotDoubleClik = false;
                                    return;
                                }
                            }

                            if (CheckTxtInPut(sender) == false)
                            {
                                bNotDoubleClik = false;
                                return;
                            }

                            if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT)
                            {
                                if (txtTotSavePoint.Text == "")
                                    SearchTxtInPut(null);       // 조회
                                else
                                {
                                    if (m_sHappyPointSave == "1")   // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                                        txtPayAmt.Focus();
                                    else
                                        CompleteTxtInPut(0);    // 적립
                                }
                            }
                            else
                            {
                                //#20180413 웰컴카드 신규기능 추가 start, 20180621
                                //기존
                                //SearchTxtInPut(null);           // 조회
                                //변경
                                bool bSch = SearchTxtInPut(null);           // 조회
                                //#20180413 웰컴카드 신규기능 추가 end, 20180621

                                //#20180413 웰컴카드 신규기능 추가 start,phj
                                
                                //#20180619 웰컴카드 개선사항 start
                                //기존
                                //if (m_SetClientSearch != "")
                                //변경

                                //#20180413 웰컴카드 신규기능 추가 start, 20180621
                                //기존
                                //if (m_SetClientSearch != "0")
                                //변경
                                if (m_SetClientSearch != "0" && bSch == true)
                                //#20180413 웰컴카드 신규기능 추가 end, 20180621

                                //#20180619 웰컴카드 개선사항 end  
                                {
                                    bNotDoubleClik = false;

                                    this.DialogResult = DialogResult.OK;
                                    this.Close();
                                }
                                //#20180413 웰컴카드 신규기능 추가 end,phj
                            }
                        }
                        else if (((Cosmos.UI.CsmPosEditBox)sender) == txtPayAmt)
                        {
                            if (txtCardNo.Text == "")
                            {
                                bNotDoubleClik = false;
                                return;
                            }

                            if (CheckTxtInPut(sender) == false)
                            {
                                bNotDoubleClik = false;
                                return;
                            }

                            CompleteTxtInPut(0);        // 적립
                        }
                    }
                    else if (sFuncValue == PosKey.MENU_KEY.CLEAR)
                    {
                        if (((Cosmos.UI.CsmPosEditBox)sender).ReadOnly == false)
                        {
                            if (((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo)
                            {
                                ClearCardInfo();        // 카드 입력 정보 클리어
                                tmrIcCard.Enabled = true;
                            }

                            ((Cosmos.UI.CsmPosEditBox)sender).Text = "";
                        }
                    }
                }
                catch (Exception ex)
                {
                    WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
                }
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            bNotDoubleClik = false;
        }

        /// <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);
            }
        }
        #endregion

        #region 텍스트박스 입력 유효성 체크
        /// <summary>
        /// 텍스트박스 입력 유효성 체크
        /// </summary>
        /// <param name="sender"></param>
        /// <returns></returns>
        private bool CheckTxtInPut(object sender)
        {
            try
            {
                // 특정 문자값 제거
                try
                {
                    if (m_cDevStatus.Msr.STX != "" && txtCardNo.Value.StartsWith(m_cDevStatus.Msr.STX)) txtCardNo.Value = txtCardNo.Value.Substring(1);

                    int iLastEtx = txtCardNo.Value.LastIndexOf(m_cDevStatus.Msr.ETX);
                    if (m_cDevStatus.Msr.ETX != "" && iLastEtx > 0) txtCardNo.Value = CmUtil.MidH(txtCardNo.Value, 0, iLastEtx);
                }
                catch { }

                // 카드번호 길이 체크
                if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtCardNo)
                {
                    if (txtCardNo.Value.Length < 10)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0037);
                        txtCardNo.Focus();
                        return false;
                    }

                    // 입력된 카드번호 변경 체크
                    //#20170913 현금영수증, 포인트카드 마스킹 미적용 start
                    //카드번호를 비교시 16자리까지만 비교 하도록 수정
                    //기존
                    /*
                    if (txtCardNo.Value != m_sInPutData)
                    {
                        ClearCardInfo();        // 카드 입력 정보 클리어
                    }
                    */
                    //변경
                    
                    string sCardTemp = "";
                    string sInputTemp = "";
                    if (txtCardNo.Value.Length > 16)
                    {
                        sCardTemp = txtCardNo.Value.Substring(0, 16);
                    }
                    else
                    {
                        sCardTemp = txtCardNo.Value.Substring(0, txtCardNo.Value.Length);
                    }

                    if (m_sInPutData.Length > 16)
                    {
                        sInputTemp = m_sInPutData.Substring(0, 16);
                    }
                    else
                    {
                        sInputTemp = m_sInPutData.Substring(0, m_sInPutData.Length);
                    }

                    if (sCardTemp != sInputTemp)
                    {
                        ClearCardInfo();        // 카드 입력 정보 클리어
                    }
                    
                    //#20170913 현금영수증, 포인트카드 마스킹 미적용 end

                    if (m_sInEncData == "")
                    {
                        if (m_sInPutData == "")
                        {
                            m_sInPutData = txtCardNo.Value;
                            if (m_sInPutData.Length > 16 && CmUtil.IsNumber(m_sInPutData.Substring(16, 1)) == false)
                            {
                                if (CmUtil.CheckHappyMobileCard(m_sInPutData) == false)
                                {
                                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0037);
                                    ClearCardInfo();        // 카드 입력 정보 클리어
                                    txtCardNo.Focus();
                                    txtCardNo.SelectText();
                                    return false;
                                }
                                m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_MOBILE_SWIP;
                                txtCardNo.Value = m_sInPutData; // .Substring(0, 16);    
                                if (m_sInPutData.Length.Equals(17) && CmUtil.IsNumber(m_sInPutData.Substring(16, 1)) == false) m_sInPutData = m_sInPutData.Substring(0, 16) + "="; //Moon SeokWoo 20171023                                                                
                            }
                            else
                            {
                                m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_KEYIN;
                            }
                            //2017.10.26 MoonSeokWoo 17자리가 아닐시 입력모드 변경하도록 수정. 
                            if (m_sInPutData.Contains("=") == true && !m_sInPutData.Length.Equals(17)) m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP;

                            
                        }
                        if (EncryptedCardNo(m_sInPutData, ref m_sInMaskData, ref m_sInEncData) == false) return false;

                        m_sAppCardNo = m_sInPutData;        // 승인카드번호
                    }
                }

                if (sender == null || ((Cosmos.UI.CsmPosEditBox)sender) == txtPayAmt)
                {
                    if (CmUtil.DoubleParse(txtPayAmt.Value) > m_nDestAmt)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0597);
                        txtPayAmt.Focus();
                        return false;
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            return false;
        }
        #endregion

        #region 입력 완료 처리
        /// <summary>
        /// 해피포인트 카드 등록 처리
        /// </summary>
        /// <param name="nFlowMode"></param>
        /// <returns></returns>
        private bool CompleteTxtInPut(int nFlowMode)
        {
            string sRet = UserCom.RST_ERR;
            try
            {

                if (nFlowMode == 1)
                {
                    if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "1")               // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                    {
                        //InParam
                        // 0.전문구분,1.거래유형, 2.할부개월, 3.승인금액 , 4.봉사료, 5.세금, 6.원승인번호, 7.원거래일자, 8.포인트거래구분, 9.상품코드,
                        //10.전표인쇄여부, 11.추가항목, 12.제휴할인코드, 13.제휴할인금액, 14.예비1, 15.예비2

                        string sAppType = PosConst.POS_CAT_MASTER.TRADE_ID.CAT_HAPPY_SAVE;
                        string sItemCode = "";  // 상품 코드 설정
                        
                        //적립 포인트는 클래스에서 셋팅함!
                        //승인처리                                                   0,                           1,       2,   3,   4,   5,  6,  7,   8,     9,      10,  11,      12,       13, 14, 15 
                        sRet = m_cHappyPoint.CompletePayment(new string[] { PosConst.POS_CAT_MASTER.TRAN_TYPE, sAppType, "00", txtPayAmt.Value, "0", "0", "", "", "04", sItemCode, "", "", m_sPosMenuKey, "", "", "" });

                        if (sRet != UserCom.RST_OK)
                        {
                            //WinManager.ErrorMessage(sRet);
                            txtCardNo.SelectText();
                            return false;
                        }
                    }
                }
                else
                {
                    if (CheckTxtInPut(null) == false) return false;

                    if (m_bSearchSuccess == false)
                    {
                        if (SearchTxtInPut(null) == false) return false; // 조회
                    }

                    // 해피포인트 카드 등록 처리
                    sRet = m_cHappyPoint.SetPayment(new string[] { m_sInPutType, m_sInMaskData, m_sInEncData, "1", m_sServiceCode, m_sAppCardNo });
                    if (sRet != UserCom.RST_OK)
                    {
                        txtCardNo.SelectText();
                        return false;
                    }

                    if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "1")               // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                    {
                        // 해피포인트 적립 완료 처리
                        sRet = m_cHappyPoint.CompletePayment(new string[] { txtPayAmt.Value });
                        if (sRet != UserCom.RST_OK)
                        {
                            txtCardNo.SelectText();
                            return false;
                        }
                    }
                }

                //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 start,phj
                //기존
                /*
                this.DialogResult = DialogResult.OK;
                this.Close();
                */

                //변경
                if (nFlowMode == 2)
                {
                    HappyPointUseForm();
                }
                else
                {
                    //#20180619 웰컴카드 개선사항 start
                    //#20180619 웰컴카드 개선사항 end

                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
                //#20180119 해피포인트 사용, 오케이 캐쉬백 사용 end,phj

                return true;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            return false;
        }

        /// <summary>
        /// 해피포인트 카드 조회 처리
        /// </summary>
        /// <returns></returns>
        private bool SearchTxtInPut(Column.TR_ETC.DATA cEtcItem)
        {
            string sRet = UserCom.RST_ERR;
            try
            {
                if (CheckTxtInPut(null) == false) return false;

                txtUsablePoint.Text = "";
                txtTotSavePoint.Text = "";
                lblAddPointNm.Text = "";
                    
                m_bSearchSuccess = false;

                if (m_sHappyPointSave == "1")   // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                {
                    lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0108);
                }
                else
                {
                    //#20180619 웰컴카드 개선사항 start
                    //기존
                    //lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0365);
                    //변경

                    //#20180619 웰컴카드 개선사항 start
                    //기존
                    //if (m_SetClientSearch != "")
                    //변경
                    if (m_SetClientSearch != "0")
                    //#20180619 웰컴카드 개선사항 end  
                    {
                        lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1132);
                    }
                    else
                    {
                        lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0365);
                    }

                    //#20180619 웰컴카드 개선사항 end 
                }

                //m_cTrnStatus.Sale.HappyBuzzMemNo = "";

                m_dtGridList.Clear();
                gridList.CsmGridDataSource = m_dtGridList;

                if (cEtcItem == null)
                {
                    // 해피 포인트 조회
                    string[] saRecvdData = null;
                    sRet = m_cHappyPoint.SearchPayment(new string[] { m_sInPutType, m_sInMaskData, m_sInEncData, "1", m_sServiceCode, m_sAppCardNo }, ref saRecvdData);
                    if (sRet != UserCom.RST_OK)
                    {
                        InDataToZeroFill();
                        txtCardNo.Focus();
                        return false;
                    }

                    //#20170913 현금영수증, 포인트카드 마스킹 미적용 start
                    //조회 성공시 카드번호 16자리까지만 표기
                    
                    if (txtCardNo.Value.Length > 16)
                    {
                        txtCardNo.Value = txtCardNo.Value.Substring(0, 16);
                    }
                    else
                    {
                        txtCardNo.Value = txtCardNo.Value.Substring(0, txtCardNo.Value.Length);
                    }
                    
                    //#20170913 현금영수증, 포인트카드 마스킹 미적용 end

                    // 조회 데이터 획득
                    cEtcItem = (Column.TR_ETC.DATA)m_cHappyPoint.GetPayment(new string[] { });

                    //#13753 POS MOT음성 기능 추가 개발요청 start,phj

                    //#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정  start,phj
                    // 기존
                    /*
                    if ((m_cTrnStatus.Head.CmpCd == "PCKR" && m_cPosStatus.Mst.DrtFrcsDiv == "10") &&  // PCKR 이고 직영점일 때 
                        m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "0" &&
                        (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE ||
                        CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2"))
                    */
                    // 변경
                    if (m_cTrnStatus.Head.CmpCd == "PCKR" &&
                        //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj
                        PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1" &&
                        //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj
                        m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "0" &&
                        (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2"))
                    //#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정  end,phj

                    {
                        // 가용포인트 1000점 이상일 때 플레이.
                        if (cEtcItem.AMT_ENTRY_04 >= 1000 &&
                            //#20180219 keyin 이나 휴대폰 번호는 사용할 수 없도록 수정 start,phj
                            (m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP || 
                             m_sInPutType == PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_MOBILE_SWIP))
                            //#20180219 keyin 이나 휴대폰 번호는 사용할 수 없도록 수정 end,phj
                        {
                            SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.HPP_USE_INPUT, "");
                        }
                    }
                    //#13753 POS MOT음성 기능 추가 개발요청 end,phj

                    if (m_sInPutData.StartsWith(PosConst.HP_CARD_PRIFIX) == false && cEtcItem.HP_ADD_INFO_SCH.Trim() != "")     // 제휴카드 조회
                    {
                        int nNowPos = 0;
                        string[] aIrtRsp = new string[Column.POINT_ADD_INFO_SEARCH.LEN.Length];
                        ItemColumn.ParseMessage(Column.POINT_ADD_INFO_SEARCH.LEN, Column.POINT_ADD_INFO_SEARCH.TYPE, Encoding.Default.GetBytes(cEtcItem.HP_ADD_INFO_SCH), ref nNowPos, ref aIrtRsp);

                        // 고객정보 중에서 첫번째 카드 선택
                        string sMemInfo = aIrtRsp[Column.POINT_ADD_INFO_SEARCH.SEQ.pointMEMINFO].Trim();
                        if (sMemInfo.Length >= 17 && CmUtil.LongParse(sMemInfo.Substring(0, 1)) > 0)
                        {
                            string sInPutData = sMemInfo.Substring(1, 16).Trim();        // 카드번호
                            string sInMaskData = "";
                            if (EncryptedCardNo(sInPutData, ref sInMaskData, ref m_sInEncData) == false) return false;
                            // 핸드폰 번호로 해피포인트 조회 시 응답전문의 포인트카드번호로 조회하지 않고 핸드폰 번호로 조회 하도록 수정(2017.09.06)
                            //cEtcItem.CanFiller1 = m_sInEncData;
                            if (IsCellularPhoneNumber(m_sInPutData) == false)
                            {
                                cEtcItem.CanFiller1 = m_sInEncData;
                            }
                            cEtcItem.OCCUR_ENTRY_14 = m_sAppCardNo = sInPutData;        // 승인카드번호
                        }
                    }

                    if (cEtcItem.OCCUR_ENTRY_12 == "Y")
                    {
                        m_cTrnStatus.Sale.HappyBuzzMemNo = m_sInPutData;
                    }
                    
                    cEtcItem.CanFiller3 = m_sInPutData;

                    //#20180413 웰컴카드 신규기능 추가 start,phj
                    
                    string m_HPCustNo = "";
                    string HP_WelcomeCard = "";

                    // 회원번호
                    m_HPCustNo = CmUtil.MidH(cEtcItem.OCCUR_ENTRY_10, 0, 10).Trim();
                    cEtcItem.OCCUR_ENTRY_22 = m_HPCustNo; //HP회원번호

                    // 웰컴카드번호
                    //int iNowPos = 0;
                    //string[] HPPAddInfo = new string[Column.POINT_ADD_INFO_SEARCH.LEN.Length];
                    //ItemColumn.ParseMessage(Column.POINT_ADD_INFO_SEARCH.LEN, Column.POINT_ADD_INFO_SEARCH.TYPE, Encoding.Default.GetBytes(cEtcItem.HP_ADD_INFO_SCH), ref iNowPos, ref HPPAddInfo);
                    //m_HPWccCard = HPPAddInfo[Column.POINT_ADD_INFO_SEARCH.SEQ.pointRESERVED].Trim();
                    //if (m_HPWccCard != "")
                    //{
                    //    m_HPWccCard = CmUtil.MidH(m_HPWccCard, 0, 20).Trim();
                    //};
                    //cEtcItem.OCCUR_ENTRY_19 = m_HPWccCard; //웰컴카드번호

                    int t_nNowPos = 0;
                    string[] t_aIrtRsp = null;
                    t_aIrtRsp = new string[Column.POINT_ADD_INFO_SEARCH.LEN.Length];
                    byte[] t_bytes = Encoding.Default.GetBytes(cEtcItem.HP_ADD_INFO_SCH);
                    ItemColumn.ParseMessage(Column.POINT_ADD_INFO_SEARCH.LEN, Column.POINT_ADD_INFO_SEARCH.TYPE, t_bytes, ref t_nNowPos, ref t_aIrtRsp);

                    
                    HP_WelcomeCard = t_aIrtRsp[Column.POINT_ADD_INFO_SEARCH.SEQ.pointRESERVED].Trim();
                    HP_WelcomeCard = CmUtil.MidH(HP_WelcomeCard, 0, 20).Trim();
                    cEtcItem.OCCUR_ENTRY_19 = HP_WelcomeCard; // 웰컴카드번호

                    //#20180413 웰컴카드 신규기능 추가 start, 20180621
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT516) == "1" &&
                        m_SetClientSearch == "0" &&
                        m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT &&
                        cEtcItem.OCCUR_ENTRY_19.Trim() == "")
                    {
                        btnWccIssue.Visible = true;
                        btnWccIssue.BringToFront();
                        txtWccIssue.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0918);
                    }
                    else
                    {
                        btnWccIssue.Visible = false;
                        txtWccIssue.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0126);
                    }
                    //#20180413 웰컴카드 신규기능 추가 end, 20180621

                    //#20180413 웰컴카드 신규기능 추가 end,phj


                    //#12500 해피포인트 실효정책 변경에 따른 프로그램 수정 start, phj
                    //기존
                    /*
                    // 소멸예정포인트 안내 메지시(2017.05.31)
                    if (cEtcItem.HP_EXT_POINT > 0 && CmUtil.LongParse(DateTime.Now.ToString("MM")) == 6)
                    {
                        WinManager.ConfirmMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0696)
                                                              , DateTime.Now.ToString("yyyy"), m_cPosStatus.Global.NumericTOCurrency(cEtcItem.HP_EXT_POINT)));
                    }
                    */
                   
                    //변경
                    // 소멸예정포인트 안내 메지시(2017.05.31)
                    if (cEtcItem.HP_EXT_POINT > 0)
                    { 
                        WinManager.ConfirmMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0740)
                                                              , DateTime.Now.ToString("yyyy"), m_cPosStatus.Global.NumericTOCurrency(cEtcItem.HP_EXT_POINT)));
                    }
                    //#12500 해피포인트 실효정책 변경에 따른 프로그램 수정 end, phj
                }

                txtUsablePoint.Text = m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_04);          // 가용포인트
                txtTotSavePoint.Text = m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_03);         // 누적포인트

                // 적립등록 중 적립예정 포인트 표시
                if (m_sPosMenuKey == PosKey.MENU_KEY.HAPPY_POINT && m_sHappyPointSave == "1")               // 해피포인트 카드등록 구분(0:카드등록, 1:적립등록)
                {
                    // 해피포인트 기본적립 대상 금액 획득
                    m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
                    
                    // 캠페인(해피포인트 적립) 설정 처리
                    ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                    cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, cEtcItem);

                    m_nDestAmt = m_cTrnStatus.Head.AftSavePoint;                                            // 적립대상금액
                    txtPayAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_nDestAmt);

                    // 적립예정포인트
                    double nSavePoint = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(m_cTrnStatus.Head.AftSavePoint, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0);
                    //double nSavePoint = m_cDataCommon.ExecTermCoopCmpPayDc(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, "", m_cTrnStatus.Head.AftSavePoint);  // 적립예정 포인트
                    txtBasicPoint.Text = m_cPosStatus.Global.NumericTOCurrency(nSavePoint);

                    // 추가적립 정보[캠페인코드(10)+대상상품금액(15)+추가적립여부(1)+추가적립상세코드(2)+본사부담금(7)+매장부담금(7)]
                    double nAddSavePnt = 0;
                    if (m_cTrnStatus.Head.AftSaveAddInfo != "")
                    {
                        if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) txtBasicPoint.Text = "0";
                        nAddSavePnt = m_cDataService.DoubleParse(m_cTrnStatus.Head.AftSaveAddInfo.Substring(28, 7));

                        lblAddPointNm.Text = cCampaingMain.GetCampaignName(m_cTrnStatus.Head.AftSaveAddInfo.Substring(0, 10).Trim(), 0);
                    }
                    txtAddPoint.Text = m_cPosStatus.Global.NumericTOCurrency(nAddSavePnt);

                    if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "")                    // 적립 대상금액 없음
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0448);
                        txtCardNo.SelectText();
                        return false;
                    }

                    txtPayAmt.ReadOnly = false;
                    txtPayAmt.Focus();
                }
                else
                {
                    // 카드등록 모드일때 인카드 쿠폰 조회
                    if (cEtcItem.HP_ADD_INFO_SCH.Trim() != "")
                    {
                        // 인카드 쿠폰 보유 여부 확인
                        int nNowPos = 0;
                        string[] aIrtRsp = new string[Column.POINT_ADD_INFO_SEARCH.LEN.Length];
                        ItemColumn.ParseMessage(Column.POINT_ADD_INFO_SEARCH.LEN, Column.POINT_ADD_INFO_SEARCH.TYPE, Encoding.Default.GetBytes(cEtcItem.HP_ADD_INFO_SCH), ref nNowPos, ref aIrtRsp);

                        if (CmUtil.LongParse(aIrtRsp[Column.POINT_ADD_INFO_SEARCH.SEQ.pointCOUPONCNT]) > 0)
                        {
                            // 인카드 쿠폰 리스트 조회
                            IPaymentUs cHappyCoupon = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYCOUPON);
                            string[] saRecvdDataCpn = null;
                            sRet = cHappyCoupon.SearchPayment(new string[] { m_sInPutType, m_sInMaskData, m_sInEncData, "1" }, ref saRecvdDataCpn);
                            if (sRet == UserCom.RST_OK)
                            {
                                Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)cHappyCoupon.GetPayment(new string[] { });

                                foreach (string[] sInfo in cPayItem.HP_CPN_INFO)
                                {
                                    DataRow drNewRow = m_dtGridList.NewRow();
                                    drNewRow["COUPON_CD"] = sInfo[0];
                                    

                                    //#20171116 온라인 쿠폰 제품군코드,상품코드 존재 시 할인 대상이 변경되도록 추가 start, phj
                                    //기존
                                    //drNewRow["COUPON_NM"] = sInfo[1];
                                    //변경
                                    drNewRow["COUPON_NM"] = CmUtil.MidH(sInfo[1], 0, 40);
                                    //#20171116 온라인 쿠폰 제품군코드,상품코드 존재 시 할인 대상이 변경되도록 추가 end, phj

                                    drNewRow["START_DT"] = m_cPosStatus.Global.DateToCulture(sInfo[2]);
                                    drNewRow["END_DT"] = m_cPosStatus.Global.DateToCulture(sInfo[3]);

                                    m_dtGridList.Rows.Add(drNewRow);
                                }
                                gridList.CsmGridDataSource = m_dtGridList;
                                gridList.CsmGridSelectRow(0);

                                cEtcItem.HP_CPN_INFO = cPayItem.HP_CPN_INFO;
                            }
                        }
                    }
                }

                //#20180821 해피포인트 고객이름 마스킹 start
                if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); }
                //#20180821 해피포인트 고객이름 마스킹 end

                // 고객명 표시
                lblTitle.Text += "  [ " + cEtcItem.HP_CUST_NAME + " ]";

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
 
                //고객 구매이력 화면 미표시
                pnlBuyHist.Visible = false;


                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                pnlBuyHistMot.Visible = false;

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
                //포인트창 닫히는 시점에 안보이도록 수정 - 불필요해서 소스 주석
                //BuyHistTime = DateTime.Now;
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                //#15525 고객구매이력 수정 요청 start
                //VIP 여부 안내 표시
                pnlBuyHistVip.Visible = false;
                //#15525 고객구매이력 수정 요청 end

                // TEST START
                //m_cPosStatus.Mst.BuyHistShowYn = "1";
                // TEST END


                //해피쿠폰 발송 사용여부 사용이고 해피포인트 고객번호가 있는 경우 POS서버로 구매이력정보 수신

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                //해당 옵션 사용하지 않고 STR_SEND_CPN_MST 테이블의 사용여부로 판단
                //기존
                //if (PosMstManager.GetPosOption(POS_OPTION.OPT514) == "1" && cEtcItem.OCCUR_ENTRY_10.Trim().Length > 0)
                //변경
                if (m_cPosStatus.Mst.BuyHistShowYn == "1" && cEtcItem.OCCUR_ENTRY_10.Trim().Length > 0)
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510
                {
                    string sBuyHistRet = UserCom.RST_ERR;
                    string sGetData = "";

                    //초기화
                    //m_cPosStatus.Sale.strBuyHist = new string[7];
                    for (int i = 0; i < m_cPosStatus.Sale.strBuyHist.Length; i++) { m_cPosStatus.Sale.strBuyHist[i] = ""; }

                    //해피포인트 고객번호
                    string sHppMembNo = "";

                    //단골여부 Y/N
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                    //단골고객여부 전역변수로 변경
                    //기존
                    //string sRegularYN = "";
                    //변경
                    m_cPosStatus.Sale.sRegularYN = "";
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                    //해피전문 반영 안되있으면 11자리만 내려옴. (고객번호(10) + 전자영수증 수신여부(1))
                    if (cEtcItem.OCCUR_ENTRY_10.Length > 11)
                    {
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                        //단골고객여부 전역변수로 변경
                        //기존
                        //sRegularYN = cEtcItem.OCCUR_ENTRY_10.Substring(11, 1);
                        //변경
                        m_cPosStatus.Sale.sRegularYN = cEtcItem.OCCUR_ENTRY_10.Substring(11, 1);
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                        sHppMembNo = cEtcItem.OCCUR_ENTRY_10.Substring(0, 10);
                    }
                    else
                    {
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                        //단골고객여부 전역변수로 변경
                        //기존
                        //sRegularYN = "";
                        //변경
                        m_cPosStatus.Sale.sRegularYN = "";
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510
                    }

                    //#20180524 구매이력조회 단골여부 전문추가 start,phj
                    //기존
                    //POS 서버 조회
                    //sBuyHistRet = m_cSvr2Tran.ServerBuyHist(sHppMembNo, ref sGetData);
                    //변경
                    //POS 서버 조회

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528
                    //쿠폰 발송 횟수 제한 기능
                    //기존
                    //sBuyHistRet = m_cSvr2Tran.ServerBuyHist(sHppMembNo, m_cPosStatus.Sale.sRegularYN, ref sGetData);
                    //변경
                    
                    //쿠폰 발송 횟수 조회
                    //구현
                    string sCpnSendCnt = m_cDataCommon.CpnSendCntSearch();

                    //#15525 고객구매이력 수정 요청 start
                    //TEST
                    //1위: 1006024148, 2위: 1008346700, 31위: 1002325773, 32위: 1005674140, 33099위: 1000616629
                    //sHppMembNo = "1002325773";
                    //#15525 고객구매이력 수정 요청 end

                    //구매이력 조회
                    sBuyHistRet = m_cSvr2Tran.ServerBuyHist(sHppMembNo, m_cPosStatus.Sale.sRegularYN, sCpnSendCnt, ref sGetData);
                    
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528

                    //#20180524 구매이력조회 단골여부 전문추가 end,phj

                    if (sBuyHistRet == UserCom.RST_OK)
                    {
                        //고객 구매이력 데이터 파싱
                        // 단골여부 | 최근1개월 | 전월 | 객단가 | 선호제품유형 | 최근구매일 | 최근 케익 구매일

                        //#15525 고객구매이력 수정 요청 start
                        //VIP 여부 안내 표시
                        // 단골여부 | 최근1개월 | 전월 | 객단가 | 선호제품유형      | 최근구매일    | 최근 케익 구매일 |코드|문구1 | 문구2| VIP여부|
                        // Y        | 0(0)      | 0    | 0      | 완제생크림 , 버터 | 21일전 (05/03)| 21일전 (05/03)   |01  |어제  | 케익 | Y      |

                        //테스트 start
                        //sGetData = "Y|0(0)|0|0|완제생크림 , 버터|21일전 (05/03)|21일전 (05/03)|01|어제|케익|Y";

                        //#15525 고객구매이력 수정 요청 end

                        m_cPosStatus.Sale.strBuyHist = sGetData.Split('|');

                        string sStrBuyHist3_0 = m_cPosStatus.Sale.strBuyHist[1];
                        string sStrBuyHist3_1 = "";
                        string sStrBuyHist3_2 = "";
                        string sStrBuyHist3_3 = "";

                        int iStrBuyHistPosUp = 0;
                        int iStrBuyHistPosDwn = 0;
                        int iStrBuyHistPosNon = 0;

                        iStrBuyHistPosUp = sStrBuyHist3_0.LastIndexOf("▲");
                        iStrBuyHistPosDwn = sStrBuyHist3_0.LastIndexOf("▼");
                        iStrBuyHistPosNon = sStrBuyHist3_0.LastIndexOf("(");


                        if (iStrBuyHistPosUp > 0)
                        {
                            sStrBuyHist3_1 = sStrBuyHist3_0.Substring(0, iStrBuyHistPosUp);
                            sStrBuyHist3_2 = sStrBuyHist3_0.Substring(iStrBuyHistPosUp, 1);
                            sStrBuyHist3_3 = sStrBuyHist3_0.Substring(iStrBuyHistPosUp + 1, sStrBuyHist3_0.Length - iStrBuyHistPosUp - 1);

                            lblBuyHist8.ForeColor = Color.Blue;
                        }
                        else if (iStrBuyHistPosDwn > 0)
                        {
                            sStrBuyHist3_1 = sStrBuyHist3_0.Substring(0, iStrBuyHistPosDwn);
                            sStrBuyHist3_2 = sStrBuyHist3_0.Substring(iStrBuyHistPosDwn, 1);
                            sStrBuyHist3_3 = sStrBuyHist3_0.Substring(iStrBuyHistPosDwn + 1, sStrBuyHist3_0.Length - iStrBuyHistPosDwn - 1);

                            lblBuyHist8.ForeColor = Color.Red;
                        }
                        else if (iStrBuyHistPosNon > 0)
                        {
                            sStrBuyHist3_1 = sStrBuyHist3_0.Substring(0, iStrBuyHistPosNon + 1);
                            sStrBuyHist3_2 = " ";
                            sStrBuyHist3_3 = sStrBuyHist3_0.Substring(iStrBuyHistPosNon + 1, sStrBuyHist3_0.Length - iStrBuyHistPosNon - 1);

                            lblBuyHist8.ForeColor = Color.FromArgb(51, 51, 51);
                        }

                        //고객 구매이력 데이터 표시

                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                        //단골고객여부 전역변수로 변경
                        //기존
                        //lblBuyHist1.Text = sRegularYN;
                        //변경
                        lblBuyHist1.Text = m_cPosStatus.Sale.sRegularYN;
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                        lblBuyHist2.Text = sStrBuyHist3_1;
                        lblBuyHist3.Text = m_cPosStatus.Sale.strBuyHist[2];
                        lblBuyHist4.Text = m_cPosStatus.Sale.strBuyHist[3];
                        lblBuyHist5.Text = m_cPosStatus.Sale.strBuyHist[4];
                        lblBuyHist6.Text = m_cPosStatus.Sale.strBuyHist[5];
                        lblBuyHist7.Text = m_cPosStatus.Sale.strBuyHist[6];

                        lblBuyHist8.Text = sStrBuyHist3_2;
                        lblBuyHist9.Text = sStrBuyHist3_3;

                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180508
                        //[쿠폰발송] 버튼 클릭시 '쿠폰발송 기능은 추후 오픈 예정입니다.' 팝업 출력
                        //기존
                        /*
                        //단골고객만 쿠폰 발송 버튼 활성화
                        if (sRegularYN == "Y" && PosMstManager.GetPosOption(POS_OPTION.OPT513) == "1")
                        {
                            btnCpnSend.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1122);
                            btnCpnSend.Enabled = true;
                        }
                        else
                        {
                            btnCpnSend.Text = "";
                            btnCpnSend.Enabled = false;
                        }
                        */
                        //변경
                        btnCpnSend.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1122);
                        btnCpnSend.Enabled = true;
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180508

                        //고객 구매이력 화면 표시
                        pnlBuyHist.Visible = true;

                        //#20180524 구매이력조회 단골여부 전문추가 start,phj
                        //기존
                      
                        ////#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                        ////고객 구매이력 정보 표시 시점에 상단 MOT 표시
                        //string sMsgCode = "";
                        //
                        ////#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180521
                        ////기존
                        ///*
                        //if (m_cPosStatus.Sale.strBuyHist.Length > 7)
                        //{
                        //    sMsgCode = m_cPosStatus.Sale.strBuyHist[7];
                        //}
                        //else
                        //{
                        //    sMsgCode = "00";
                        //}
                        //DataTable dt = m_cDataCommon.SeletCommonCode("T0038", sMsgCode);
                        //if (!(dt == null || dt.Rows.Count == 0))
                        //{
                        //    DataRow dr = dt.Rows[0];
                        //    lblBuyHistMot.Text = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CD_NM);
                        //}
                        ////적용시 true
                        //pnlBuyHistMot.Visible = true;
                        //*/
                        //
                        ////변경
                        //if (m_cPosStatus.Sale.strBuyHist.Length > 7)
                        //{
                        //    sMsgCode = m_cPosStatus.Sale.strBuyHist[7];
                        //}
                        //
                        //// TEST START
                        ////sMsgCode = "요즘 방문이 뜸하셨는데, 다시 찾아주셔서 감사드려요";
                        ////sMsgCode = "요즘 방문이 뜸하셨는데, 다시 찾아주셔서 감사드려요@$다음 방문시 사용 하실 수 있는 XX쿠폰 발송해 드릴께요";
                        //// TEST END
                        //
                        //if (sMsgCode != "")
                        //{
                        //    lblBuyHistMot.Text = sMsgCode.Replace("@", "\r").Replace("$", "\n").ToString();
                        //    pnlBuyHistMot.Visible = true;
                        //}
                        //else
                        //{
                        //    pnlBuyHistMot.Visible = false;
                        //}
                        //
                        ////#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180521
                        //BuyHistTime = DateTime.Now;
                        ////#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                        //변경

                        string sMsgCode = "";
                        string sMsg1 = "";
                        string sMsg2 = "";

                        if (m_cPosStatus.Sale.strBuyHist.Length > 7)
                        {
                            sMsgCode = m_cPosStatus.Sale.strBuyHist[7];
                            sMsg1 = m_cPosStatus.Sale.strBuyHist[8];
                            sMsg2 = m_cPosStatus.Sale.strBuyHist[9];
                        }
                        else
                        {
                            //#20180528 구매이력조회 상단 MOT 미표시 start,phj
                            //기존
                            //sMsgCode = "00";
                            //변경
                            sMsgCode = "99";
                            //#20180528 구매이력조회 상단 MOT 미표시 end,phj
                            
                        }

                        //#20180528 구매이력조회 상단 MOT 미표시 start,phj
                        //기존
                        /*
                        string sCmmMsg1 = "";
                        string sCmmMsg2 = "";
                        DataTable dt = m_cDataCommon.SeletCommonCode("T0038", sMsgCode);
                        if (!(dt == null || dt.Rows.Count == 0))
                        {
                            DataRow dr = dt.Rows[0];
                            sCmmMsg1 = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_01);
                            sCmmMsg2 = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_02);
                        }

                        sCmmMsg1 = string.Format(sCmmMsg1, sMsg1, sMsg2);
                        sCmmMsg2 = string.Format(sCmmMsg2, sMsg1, sMsg2);
                        if (sCmmMsg1 != "" || sCmmMsg2 != "")
                        {
                            lblBuyHistMot.Text = sCmmMsg1 + "\r" + sCmmMsg2;
                            pnlBuyHistMot.Visible = true;
                        }
                        else
                        {
                            lblBuyHistMot.Text = "";
                            pnlBuyHistMot.Visible = false;
                        }                        
                        */

                        //변경
                        if (sMsgCode == "99")
                        {
                            lblBuyHistMot.Text = "";
                            pnlBuyHistMot.Visible = false;
                        }
                        else
                        {
                            string sCmmMsg1 = "";
                            string sCmmMsg2 = "";
                            DataTable dt = m_cDataCommon.SeletCommonCode("T0038", sMsgCode);
                            if (!(dt == null || dt.Rows.Count == 0))
                            {
                                DataRow dr = dt.Rows[0];
                                sCmmMsg1 = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_01);
                                sCmmMsg2 = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_02);
                            }

                            sCmmMsg1 = string.Format(sCmmMsg1, sMsg1, sMsg2);
                            sCmmMsg2 = string.Format(sCmmMsg2, sMsg1, sMsg2);
                            if (sCmmMsg1 != "" || sCmmMsg2 != "")
                            {
                                lblBuyHistMot.Text = sCmmMsg1 + "\r" + sCmmMsg2;
                                pnlBuyHistMot.Visible = true;
                            }
                            else
                            {
                                lblBuyHistMot.Text = "";
                                pnlBuyHistMot.Visible = false;
                            } 
                        }
                        //#20180528 구매이력조회 상단 MOT 미표시 end,phj

                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
                        //포인트창 닫히는 시점에 안보이도록 수정 - 불필요해서 소스 주석
                        //BuyHistTime = DateTime.Now;
                        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531
                        
                        //#20180524 구매이력조회 단골여부 전문추가 end,phj 

                        //#15525 고객구매이력 수정 요청 start
                        //VIP 여부 안내 표시
                        string sVipYN = "N";

                        if (m_cPosStatus.Sale.strBuyHist.Length > 10)
                        {
                            sVipYN = m_cPosStatus.Sale.strBuyHist[10];
                        }

                        if (sVipYN == "Y")
                        {
                            //#15525 고객구매이력 수정 요청 start, 20180704
                            //기존
                            /*
                            pnlBuyHistVip.Visible = true;
                            pnlBuyHistVip.BringToFront();
                            */
                            //변경
                            WinBasic.ShowForm(new string[] { FormManager.FORM_VIP });
                            //#15525 고객구매이력 수정 요청 end, 20180704
                        }
                        else
                        {
                            pnlBuyHistVip.Visible = false;
                        }

                        //#15525 고객구매이력 수정 요청 end

                    }
                    else
                    {
                        //고객 구매이력 데이터 초기화
                        //for (int i = 0; i < m_cPosStatus.Sale.strBuyHist.Length; i++) { m_cPosStatus.Sale.strBuyHist[i] = ""; }

                        //고객 구매이력 화면 미표시
                        pnlBuyHist.Visible = false;
                    }
                }
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

                txtCardNo.SelectText();

                m_bSearchSuccess = true;
                return true;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            return false;
        }

        #region public bool SearchTxtInPut(Column.TR_ETC.DATA _cEtcItem, string _strHappyPointCardNo, string _strDiv)
        public bool SearchTxtInPut(Column.TR_ETC.DATA _cEtcItem, string _strHappyPointCardNo, object _strDiv)
        {
            // 리턴 변수 선언 -----
            bool _blnResult = false;

            //==================================================================
            // (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 함수 오버로딩
            //==================================================================
            #region 해피포인트 제휴할인 선리딩 처리를 위한 함수 오버로딩

            #region 만약 구분(_strDiv) 값이 ''(공백)일 경우 해피 포인트만 표시한다.
            if (_strDiv == null)
            {
                // 해피포인트 카드 번호 표시 -----
                txtCardNo.Text = _strHappyPointCardNo;
            }
            #endregion

            #region 만약 구분(_strDiv) 값이 '조회'일 경우 해피 포인트 번호 표시후 조회까지 처리한다.
            else if (((Cosmos.UI.CsmButton)_strDiv) == btnSearch)
            {
                // 해피포인트 카드 번호 설정 -----
                txtCardNo.Value = _strHappyPointCardNo;

                // 해피포인트 조회 함수 호출 -----
                _blnResult = SearchTxtInPut(null);
            }
            #endregion

            #region 만약 구분(_strDiv) 값이 '등록'일 경우 해피 포인트 번호 표시후 등록까지 처리한다.
            else if (((Cosmos.UI.CsmButton)_strDiv) == btnEnter)
            {
                // 해피포인트 카드 번호 설정 -----
                txtCardNo.Value = _strHappyPointCardNo;

                // 해피포인트 등록 버튼 클릭 이벤트 호출 -----
                btnProc_Click(btnEnter, null);
            }
            #endregion

            #endregion

            // 리턴값 설정 -----
            return _blnResult;
        }
        #endregion

        /// <summary>
        /// 해피포인트 정보 출력 처리
        /// </summary>
        /// <param name="nFlowMode"></param>
        /// <returns></returns>
        private bool PrintTxtInPut()
        {
            try
            {
                if (txtUsablePoint.Text == "") return false;

                Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)m_cHappyPoint.GetPayment(new string[] { });

                // 해피포인트 정보 출력
                ISaleCompleteUs cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
                cSaleComplete.ExecuteInCardCpnReceipt(cEtcItem, m_dtGridList);

                return true;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            return false;
        }
        #endregion

        #region DeviceEvent 관련
        /// <summary>
        /// DeviceEvent 관련
        /// </summary>
        /// <param name="sDevice"></param>
        /// <param name="sData1"></param>
        /// <param name="sData2"></param>
        /// <param name="sData3"></param>
        public void OnDeviceEvent(string sDevice, string sData1, string sData2, string sData3)
        {
            try
            {
                if (bNotDoubleClik) return;
                bNotDoubleClik = true;

                switch (sDevice)
                {
                    case PosConst.OPOS_DEVICE.MSR:
                        this.Invoke(new EventHandler(OnMSREvent));
                        break;
                    case PosConst.OPOS_DEVICE.SCANNER:
                        this.Invoke(new EventHandler(OnScannerEvent));
                        break;
                }
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
                bNotDoubleClik = false;
            }
            bNotDoubleClik = false;
        }

        /// <summary>
        /// MSR Event
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        private void OnMSREvent(object source, EventArgs e)
        {
            try
            {
                string sMsrData = m_cDevStatus.Msr.Track2Data;
                if (sMsrData.Length > 0)
                {
                    m_sInEncData = "";
                    m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP;
                    m_sInPutData = sMsrData;

                    txtCardNo.Value = m_sInPutData.Length > 16 ? m_sInPutData.Substring(0, 16) : m_sInPutData;

                    txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);
                }
            }
            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="source"></param>
        /// <param name="e"></param>
        private void OnScannerEvent(object source, EventArgs e)
        {
            try
            {
                string sScanData = m_cDevStatus.Scanner.DataLabel;
                if (sScanData.Length > 0)
                {
                    m_sInEncData = "";
                    m_sInPutData = sScanData;
                    if (m_sInPutData.Length > 16 && CmUtil.IsNumber(m_sInPutData.Substring(16, 1)) == false)
                    {
                        m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_MOBILE_SWIP;
                        txtCardNo.Value = m_sInPutData.Substring(0, 16);
                    }
                    else
                    {
                        m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_KEYIN;
                        txtCardNo.Value = m_sInPutData;
                    }

                    txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);
                }
            }
            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 bool IsCellularPhoneNumber(string sInputData)
        {
            bool bRet = false;
            try
            {
                if (sInputData.Length == 10 || sInputData.Length == 11)
                {
                    if (sInputData.StartsWith("010") == true || sInputData.StartsWith("011") == true || sInputData.StartsWith("017") == true ||
                       sInputData.StartsWith("016") == true || sInputData.StartsWith("018") == true || sInputData.StartsWith("019") == true)
                    {
                        bRet = true;
                    }
                }
            }
            catch(Exception ex)
            {
                bRet = false;

                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                   System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }

            return bRet;
        }

        /// <summary>
        /// 카드 번호 암호화
        /// </summary>
        /// <param name="sInData"></param>
        /// <param name="sInMaskData"></param>
        /// <param name="sInEncData"></param>
        /// <returns></returns>
        private bool EncryptedCardNo(string sInData, ref string sInMaskData, ref string sInEncData)
        {
            string sEncData = sInData;
            bool bRet = false;
            try
            {
                UnRegIcCallback();              // IC리더 콜백 해지

                //#20170913 현금영수증, 포인트카드 마스킹 미적용 start
                // "0"인 경우 마스킹 미처리
                //기존
                //sEncData = m_cDeviceICReader.GetEncryptedCardNo(sInData).Trim();
                //변경
                sEncData = m_cDeviceICReader.GetEncryptedCardNo(sInData, "0").Trim();
                //#20170913 현금영수증, 포인트카드 마스킹 미적용 end

                if (CmUtil.MidH(sEncData, 0, 2) == "00")
                {
                    sInEncData = CmUtil.MidH(sEncData, 2, 512).Trim();                          // 암호화 데이터
                    sInMaskData = CmUtil.MidH(sEncData, 514, sEncData.Length - 514).Trim();     // 마스킹 데이터

                    //#20170913 현금영수증, 포인트카드 마스킹 미적용 start
                    sInMaskData = CmUtil.MidH(sInMaskData, 0, 6) + "********";
                    //#20170913 현금영수증, 포인트카드 마스킹 미적용 end

                    bRet = true;
                }
                else
                {
                    //암호화 처리 실패!
                    UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                        System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Fail =>" + sInData);
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0280);
                }

                if (txtCardNo.ReadOnly == false)
                {
                    if (txtCardNo.Value == "") tmrIcCard.Enabled = true;    // IC리더 콜백 설정
                }
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            return bRet;
        }

        /// <summary>
        /// IC 카드 정보 입력 처리
        /// </summary>
        /// <returns></returns>
        private bool GetIcCardData(bool bCancelCallBack)
        {
            string sRsvStr = "";
            try
            {
                tmrIcCard.Enabled = false;
                UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");

                if (bCancelCallBack == true) UnRegIcCallback(); // IC리더 콜백 해지

                txtCardNo.Value = "";
                ClearCardInfo();        // 카드 입력 정보 클리어

                if (m_cDeviceICReader.GetCardInfo_ICReader(PosConst.IC_READER_TRAN_TYPE.POINT, (int)m_cTrnStatus.Head.NetSaleAmt, ref sRsvStr) == true)
                {
                    if (CmUtil.MidH(sRsvStr, 0, 2) == "00")
                    {
                        m_sInEncData = CmUtil.MidH(sRsvStr, 6, 512).Trim();
                        m_sInMaskData = CmUtil.MidH(sRsvStr, 1030, 37).Trim();
                        m_sServiceCode = CmUtil.MidH(sRsvStr, 1067, 5).Trim();

                        m_sInPutData = m_sInMaskData;
                        m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP;

                        txtCardNo.Value = m_sInPutData.Length > 16 ? m_sInPutData.Substring(0, 16) : m_sInPutData;

                        //tmrIcCard.Enabled = true;       // IC리더 콜백 설정
                        return true;
                    }
                }

                if (txtCardNo.Value == "") tmrIcCard.Enabled = true;       // IC리더 콜백 설정
                // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0321);
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            finally
            {
                // 여전법 대응////////////////////////////////////////////////////////////////////
                CmUtil.ZeroFillClear(ref sRsvStr);
                //////////////////////////////////////////////////////////////////////////////////
            }
            return false;
        }

        /// <summary>
        /// RF 카드 정보 입력 처리
        /// </summary>
        /// <returns></returns>
        private bool GetRfCardData()
        {
            string sRsvStr = "";
            try
            {
                txtCardNo.Value = "";
                ClearCardInfo();        // 카드 입력 정보 클리어

                //카드 정보 입력
                if (m_cDeviceICReader.GetRfCreditCardInfo("1", m_cTrnStatus.Head.NetSaleAmt.ToString(), "", "", "", ref sRsvStr) == false)
                {
                    if (sRsvStr != "") WinManager.ErrorMessage(sRsvStr);
                    return false;
                }

                m_sInEncData = CmUtil.MidH(sRsvStr, 2, 512).Trim();
                m_sInMaskData = CmUtil.MidH(sRsvStr, 514, 40).Trim();
                m_sServiceCode = CmUtil.MidH(sRsvStr, 554, 5).Trim();

                m_sInPutData = m_sInMaskData;
                m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF;

                txtCardNo.Value = m_sInPutData.Length > 16 ? CmUtil.MidH(m_sInPutData, 0, 16) : m_sInPutData;
                return true;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            finally
            {
                // 여전법 대응////////////////////////////////////////////////////////////////////
                CmUtil.ZeroFillClear(ref sRsvStr);
                //////////////////////////////////////////////////////////////////////////////////
            }
            return false;
        }

        /// <summary>
        /// POP 카드 정보 입력 처리
        /// </summary>
        /// <returns></returns>
        private bool GetPopCardData()
        {
            string sRsvStr = "";
            try
            {
                txtCardNo.Value = "";
                ClearCardInfo();        // 카드 입력 정보 클리어

                if ( m_cDeviceICReader.RfPrepaidCardInfo(ref sRsvStr) == false)
                {
                    if (sRsvStr != "") WinManager.ErrorMessage(sRsvStr);
                    return false;
                }
                if (sRsvStr.StartsWith("T") == true)
                {
                    m_sInPutData = sRsvStr.Substring(7, 16).Trim();
                }
                else if (sRsvStr.StartsWith("E") == true)
                {
                    m_sInPutData = sRsvStr.Substring(1, 20).Trim();
                }
                else
                {
                    return false;
                }

                bool bRet = EncryptedCardNo(m_sInPutData, ref m_sInMaskData, ref m_sInEncData);
                if (bRet == true)
                {
                    m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF;
                    txtCardNo.Text = m_sInPutData;
                }
                return bRet;

                //UnRegIcCallback();              // IC리더 콜백 해지

                //string sEncData = m_cDeviceICReader.GetEncryptedCardNo(m_sInPutData).Trim();
                //if (CmUtil.MidH(sEncData, 0, 2) == "00")
                //{
                //    m_sInEncData = CmUtil.MidH(sEncData, 2, 512).Trim();                          // 암호화 데이터
                //    m_sInMaskData = CmUtil.MidH(sEncData, 514, sEncData.Length - 514).Trim();     // 마스킹 데이터
                //    m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_RF;
                //    txtCardNo.Text = m_sInPutData;
                //    return true;
                //}
                //else
                //{
                //    //암호화 처리 실패!
                //    UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                //        System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Fail =>" + m_sInPutData);
                //    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0280);
                //}

                //if (txtCardNo.ReadOnly == false) tmrIcCard.Enabled = true;    // IC리더 콜백 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            finally
            {
                // 여전법 대응////////////////////////////////////////////////////////////////////
                CmUtil.ZeroFillClear(ref sRsvStr);
                //////////////////////////////////////////////////////////////////////////////////
            }
            return false;
        }

        /// <summary>
        /// 전화번호 입력 처리
        /// </summary>
        /// <returns></returns>
        private bool GetPinPadData()
        {
            try
            {
                txtCardNo.Value = "";
                ClearCardInfo();        // 카드 입력 정보 클리어

                string sRsvStr = "";
                if (m_cDeviceSignPad.GetMsg_SignPad(false, MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0324), ref sRsvStr) == false)
                {
                    //WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0321);
                    return false;
                }
                txtCardNo.Value = sRsvStr;
                return true;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            return false;
        }
        #endregion

        private void gridList_Enter(object sender, EventArgs e)
        {
            padInPut.SetActiveFocus();
        }

        private void lblCardNo_MouseDown(object sender, MouseEventArgs e)
        {
            //if (e.Button == System.Windows.Forms.MouseButtons.Right)
            //{
            //    m_cDevStatus.Scanner.DataLabel = "8231124183433925%";
            //    OnScannerEvent(null, null);
            //}
        }

        //#13753 POS MOT음성 기능 추가 개발요청 start,phj
        public bool SetPlayMotMsg(string sMsgTp, string sMsgFlag, string sSeqNo)
        {
            try
            {
                DataTable dtHead = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG.TABLE_NAME, sMsgTp, sMsgFlag, sSeqNo);
                if (dtHead != null && dtHead.Rows.Count > 0)
                {
                    // 음성 사용 유무(0:미사용, 1:사용)
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT309) == "2")
                    {
                        DataRow dr = dtHead.Rows[0];
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_DIV) == "01")           // 00(없음), 01(WAVE), 02(TTS)
                        {
                            string sFilePath = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_NM);
                            CmUtil.PlaySound(sFilePath);
                        }
                        else if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_DIV) == "02")      // 00(없음), 01(WAVE), 02(TTS)
                        {
                            CmUtil.SpeakByTTSEngine(m_cPosStatus.Base.Country, CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.TTS_DSCRP), 150);
                        }
                    }
                }

                return true;

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

                return false;
            }
        }
        //#13753 POS MOT음성 기능 추가 개발요청 end,phj

        //#20180413 웰컴카드 신규기능 추가 start, 20180621
        #region 웰컴카드 발급 버튼
        /// <summary>
        /// 웰컴카드 발급 버튼
        /// </summary>
        private bool WelcomeCard_Issue(string sCardNo = "")
        {
            string sRet = UserCom.RST_ERR;

            if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return false;
            if (m_cPosStatus.Base.TrainingFlag == "1" || m_cPosStatus.Mst.TestStorYn == "1") return false;

            if (PosMstManager.GetPosOption(POS_OPTION.OPT516) != "1")
            {

                WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0790);
                return false;

            }

            try
            {
                UserLog.WriteLogFile(UserCom.LOG_IOS,
                                     System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                     System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
                                     System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
                                     "[WelcomeCard_Issue] WELCOMECARD_ISSUE Open!  ");


                sRet = WinPay.ShowForm(new string[] { FormManager.FORM_WELCOMECARD_ISSUE, PosKey.MENU_KEY.WELCOMECARD_ISSUE, "2", "", "false" });

                if (sRet != UserCom.RST_OK)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                            System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
                                            System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
                                            ex.Message);

                return false;
            }
        }
        #endregion
        //#20180413 웰컴카드 신규기능 추가 end, 20180621


        #region 여전법 대응
        /// <summary>
        /// ZeroFill 초기화
        /// </summary>
        private void InDataToZeroFill()
        {
            try
            {

                //여전법 대응!
                //////////////////////////////////////////////////////////////////////////////////
                CmUtil.ZeroFillClear(ref m_sInPutData);
                CmUtil.ZeroFillClear(ref m_sInEncData);
                CmUtil.ZeroFillClear(ref m_sInMaskData);
                //////////////////////////////////////////////////////////////////////////////////

                txtCardNo.Value = string.Empty;
            }
            catch (Exception) { }

        }
        #endregion 여전법 대응

        #region IC리더 콜백 관련
        /// <summary>
        /// IC리더 콜백 설정
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tmrIcCard_Tick(object sender, EventArgs e)
        {
            try
            {
                UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", tmrIcCard.Tag.ToString());

                if (m_cDevStatus.ICReader.UseYn != true)             // 여전법 인증여부(0:MSR, 1:IC)
                {
                    tmrIcCard.Enabled = false;
                    return;
                }

                if (tmrIcCard.Tag == null || tmrIcCard.Tag.ToString() == "")
                {
                    // IC리더 콜백 설정
                    if (bNotDoubleClik) return;

                    tmrIcCard.Enabled = false;

                    //#20170918 IC 콜백 함수 변경 start
                    //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정.
                    //기존
                    m_cDeviceICReader.RegIcCallback(delegateReader);
                    //변경
                    //string sApprID = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.APPR_ID);
                    //m_cDeviceICReader.RegIcCallbackCardInfo(sApprID, m_cDataService.IntParse(txtPayAmt.Text), delegateReaderCardInfo);
                    //#20170918 IC 콜백 함수 변경 end
                }
                else if (tmrIcCard.Tag.ToString() == "MSR" )
                {
                    // MSR 카드 읽기
                    tmrIcCard.Enabled = false;
                    tmrIcCard.Tag = "";
                    tmrIcCard.Interval = 500;

                    bNotDoubleClik = false;
                    txtEditBox_EditBoxKeyDownEvent(txtCardNo, PosKey.MENU_KEY.ENTER);

                    tmrIcCard.Enabled = true;
                }
                else if (tmrIcCard.Tag.ToString() == "IC")
                {
                    // IC리더 카드 읽기
                    tmrIcCard.Enabled = false;
                    tmrIcCard.Tag = "";
                    tmrIcCard.Interval = 500;

                    bNotDoubleClik = false;
                    btnProc_Click(btnIcCard, null);
                }
                //#20170918 IC 콜백 함수 변경 start
                /*
                //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정.
                else if (tmrIcCard.Tag.ToString() == "ICREADER")
                {
                    // IC리더 카드 읽기(CardInfo)
                    tmrIcCard.Enabled = false;
                    tmrIcCard.Tag = "";
                    tmrIcCard.Interval = 500;

                    bNotDoubleClik = false;
                }
                */
                //#20170918 IC 콜백 함수 변경 end
                else
                    tmrIcCard.Enabled = false;

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

        delegate void DelegateIcReaderCallBack(int rc, StringBuilder str);
        /// <summary>
        /// IC리더 콜백 함수
        /// </summary>
        /// <param name="num"></param>
        /// <param name="str"></param>
        public void OnIcReaderCallBack(int num, StringBuilder str)
        {
            try
            {
                if (txtCardNo.InvokeRequired)
                {
                    DelegateIcReaderCallBack d = new DelegateIcReaderCallBack(OnIcReaderCallBack);
                    this.Invoke(d, new object[] { num, str });
                }
                else
                {
                    if (bNotDoubleClik) return;
                    bNotDoubleClik = true;

                    if (num == 1)
                    {
                        // IC 카드
                        tmrIcCard.Tag = "IC";
                        tmrIcCard.Interval = 100;
                    }
                    else
                    {
                        // MSR 카드
                        if (str.ToString().StartsWith("EN") == true)
                        {
                            ClearCardInfo();        // 카드 입력 정보 클리어

                            m_sInEncData = CmUtil.MidH(str.ToString(), 0, 512).Trim();
                            m_sInMaskData = CmUtil.MidH(str.ToString(), 512, 40).Trim();
                            m_sInPutData = m_sInMaskData;
                            m_sInPutType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP;

                            txtCardNo.Value = m_sInPutData;
                            tmrIcCard.Tag = "MSR";

                            tmrIcCard.Interval = 100;
                        }
                        else
                        {
                            tmrIcCard.Interval = 500;
                        }
                    }
                    tmrIcCard.Enabled = true;

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

        /// <summary>
        /// IC리더 콜백 해지
        /// </summary>
        private void UnRegIcCallback()
        {
            try
            {
                if (m_cDevStatus.ICReader.UseYn == true)     // 여신전문금융업법 적용여부 체크
                {
                    tmrIcCard.Enabled = false;

                    //#20170918 IC 콜백 함수 변경 start
                    //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정.
                    //기존
                    m_cDeviceICReader.UnRegIcCallback();
                    //변경
                    //m_cDeviceICReader.UnRegIcCallbackCardInfo();
                    //#20170918 IC 콜백 함수 변경 end
                }
            }
            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 tmrDateTime_Tick(object sender, EventArgs e)
        {
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
            //고객 구매이력 정보 표시 시점에 상단 MOT 표시

            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180531
            //포인트창 닫히는 시점에 안보이도록 수정 - 불필요해서 소스 주석
            /*
            if (pnlBuyHistMot.Visible == true)
            {
                TimeSpan Ti = DateTime.Now - BuyHistTime;
                if (Ti.Seconds > 3)
                {
                    pnlBuyHistMot.Visible = false;
                    BuyHistTime = new DateTime();
                }

            }
            */
            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180531

            //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

        }

        //#15525 고객구매이력 수정 요청 start
        //VIP 여부 안내 표시
        #region VIP 여부 안내표시 클릭시 안보이게 처리
        private void picVip_Click(object sender, EventArgs e)
        {
            pnlBuyHistVip.Visible = false;
        }
        #endregion VIP 여부 안내표시 클릭시 안보이게 처리
        //#15525 고객구매이력 수정 요청 end

        //#20170918 IC 콜백 함수 변경 start
        //포인트창에서 해피제휴 신용카드 리딩시 IC 우선 거래로 인해 '카드를 읽혀 주세요' 팝업 나오는 현상 수정.
        /*
        delegate void DelegateWriteLog(int returnValue, StringBuilder returnData);
        /// <summary>
        /// IC리더 콜백 함수(CardInfo)
        /// </summary>
        /// <param name="returnValue"></param>
        /// <param name="returnData"></param>
        public void OnIcReaderCallBackCardInfo(int returnValue, StringBuilder returnData)
        {
            if (txtCardNo.InvokeRequired)
            {
                DelegateWriteLog d = new DelegateWriteLog(OnIcReaderCallBackCardInfo);
                this.Invoke(d, new object[] { returnValue, returnData });
            }
            else
            {
                if (m_bCardInPut) return;
                m_bCardInPut = true;

                if (returnValue > 0)
                {
                    string sRsvStr = returnData.ToString();
                    if (CmUtil.MidH(sRsvStr, 0, 2) == "00")
                    {
                        m_sCardNo = CmUtil.MidH(sRsvStr, 6, 512).Trim();
                        txtCardNo.Value = CmUtil.MidH(sRsvStr, 1030, 37).Trim();
                        m_sIcChip = CmUtil.MidH(sRsvStr, 518, 512).Trim();
                        if (CmUtil.MidH(sRsvStr, 4, 2).Trim() == "02")
                        {
                            m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP;
                        }
                        else
                        {
                            m_InputType = PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_IC;
                        }
                        m_sServiceCode = CmUtil.MidH(sRsvStr, 1067, 5).Trim();
                        m_sFallDiv = CmUtil.MidH(sRsvStr, 3, 1); // == "3" ? "0" : "1";

                        // IC 카드(CardInfo)
                        tmrIcCard.Tag = "ICREADER";
                        tmrIcCard.Interval = 100;
                        tmrIcCard.Enabled = true;

                        m_bCardInPut = false;
                    }
                }
            }

        }
        */
        //#20170918 IC 콜백 함수 변경 end

        #endregion

    }
}
