using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.Runtime.InteropServices;
using System.Threading;
using System.IO;

using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.UI;
using System.Diagnostics;

//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
using System.Text;
//#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

//using Cosmos.Service;

//#20181015 결제창 엑박 관련 이미지 미사용 처리 start
using System.Drawing.Drawing2D;
//#20181015 결제창 엑박 관련 이미지 미사용 처리 end

//************************************************************************************************
// 변경  이력 : 해피포인트 제휴할인 선리딩 처리
//------------------------------------------------------------------------------------------------
// - 작 업 자 : 서광원B
// - 작업일자 : 2017.11.01
// - 작업내용1 : 매출등록화면에서 상품등록 후
//               해피포인트 카드 혹은 제휴할인 카드를 리딩했을때
//               정상적인 카드일 경우 각각의 번호를 저장한다.
//               이후 '결제' 버튼 클릭 -> 포인트할인결제 화면에서 -> '해피포인트' 버튼 클릭시
//               저장되어 있던 해피포인트 번호 표시후 조회까지 진행한다.
//              '제휴할인(통합)' 버튼 클릭시에도 동일한 처리를 수행한다.
// - 작업내용2 : 만약 해피포인트 옵션이 설정되어 있을 경우 
//               '결제' 버튼 클릭시 해피포인트 사용 화면을 바로 표시한다.
//               추가로 만약 해피포인트 카드가 리딩되었다면 조회까지 진행한다.
//************************************************************************************************

//************************************************************************************************
// 변경  이력 : 바코드 중복 처리
//------------------------------------------------------------------------------------------------
// - 작 업 자 : 서광원B
// - 작업일자 : 2017.11.10
// - 작업분류 : 2017.10.28 정보운영 판매 바코드 인식
// - 요청사항 : 1.상품마스터에는 바코드 복수 등록이 가능하나, 판매POS는 복수로 적용불가함.
//                - 바코드가 키값으로 되어 있어 중복적용이 불가능한 구조 개선 필요
//              2.1개의 상품에 바코드 정보가 여러 개인 경우 제품선택화면에서 사용자가
//                상품선택할 수 있도록 기능 개선
// - 작업내용 : 상품마스터테이블(MST_ITEM), 상품바코드테이블(MST_ITEM_BAR_CD)을 대상으로
//              만약 1개의 상품을 리딩했는데, 마침 상품바코드테이블에 데이터가 2개 이상일 경우
//              새로 생성한 상품 선택 화면(frmMultiItem) 에서 사용자가 원하는 상품을 선택할 수 있도록 한다.
//              cf) 상품코드와 상품명을 리턴하는 쿼리 함수(SeletItemMstNmoScanCode) 추가
//************************************************************************************************
namespace Cosmos.Win
{
    public partial class frmSaleMain : Form, IFormSaleMainUs
    {
        private SManager sManager = new SManager();                                 // 이 객체를 통해 업무 Service 호출
        private StateServer StateObject = (StateServer)StateServer.GetInstance();   // StateObject : StateServer Object(객체)
        private PosStatus m_cPosStatus = null;                                      // 기본정보 참조
        private TranStatus m_cTrnStatus = null;                                     // 거래정보 참조
        private DeviceStatus m_cDevStatus = null;                                   // 장치저보 참조 
        private PosOLEDevice.DelegateOlePos delegatePos;

        private IDataProcessUs m_cDataService = null;                               // 거래데이터 합계금액 계산 및 관리
        private ISalePluItemUs m_cPluService = null;                                // 판매 등록 관리
        private ICustDisplayUs m_cCustDisp = null;                                  // 고객디스플레이 관리
        private IMasterUs m_cMaster = null;                                         // 마스터 관리
        private ICampaignUs m_cCampaingMain = null;                                 // 캠페인 관리
        private IDataCommonUs m_cDataCommon = null;                                 // POS 공통함수 인터페이스
        private IPaymentUs m_cPayCancel = null;                                     // 결제 취소 공통 
        private ITableUs m_cTableSvr = null;                                        // 테이블 관리
        private IWatcherBack m_cBackgroundDown = null;

        private IDataServiceUs m_cPosNoticeCom = null;                              // 공지사항 공통                               
        private SaleMainProcess m_cSaleMainProc = null;                             // 판매화면 기능 관리

        private ISvr2Tran m_cSvr2Tran = null;                                       // 서버시간 동기화

        //17.05.18 dkshin 쇼킹박스 추가
        private ISaleCompleteUs m_cSaleService = null;

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
        private IICReaderUs m_cDeviceICReader = null;

        /// <summary>
        /// 입력구분
        /// </summary>
        private string m_sInPutType = "";
        /// <summary>
        /// 마스킹데이터
        /// </summary>
        private string m_sInMaskData = "";
        /// <summary>
        /// 카드데이터(암호화)
        /// </summary>
        private string m_sInEncData = "";
        /// <summary>
        /// 서비스코드
        /// </summary>
        private string m_sServiceCode = "";
        /// <summary>
        /// 승인카드번호
        /// </summary>
        private string m_sAppCardNo = "";

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

        private int m_nTimeSyncFlag = 0;

        /// <summary>
        /// 부가메뉴선택유형(1:단일선택, 2:멀티선택)
        /// </summary>
        string m_sSubMenuGrpSelType = "";
        /// <summary>
        /// 화면 초기화 여부
        /// </summary>
        private bool m_bFormInint = false;
        /// <summary>
        /// 상품키 구성 마스터
        /// </summary>
        //private DataTable m_dtMstItemKeyCompnt;

        private ArrayList m_alMotDtl = new ArrayList();     // 결제 수단 정보 MOT 배열
        private int iMaxPage;                               // 결제 수단 정보 MOT 최대 페이지 수
        private int iNowPage;                               // 결제 수단 정보 MOT 현재 페이지
        private readonly string MotbtnName = "BtnMotPay";   // 결제 수단 기본 버튼명

        private Hashtable m_htMenuControls;                                         // 상단 SLIDE 메뉴버튼 컨트롤 정보
        private ArrayList m_alMenuHead = new ArrayList();                           // 상단 SLIDE 메뉴타이틀정의 배열
        private ArrayList m_alMenuProc = new ArrayList();                           // 상단 SLIDE 메뉴정의 배열

        private string m_SlideMenuKey = string.Empty;                               // 슬라이드 메뉴키

        #region 해피포인트 선리딩 처리를 위한 변수
        DataTable gdtFuncKey = new DataTable();         // 해피포인트 및 제휴할인 카드를 선리딩할 수 있는지 여부 확인을 위한 테이블
        string strDispPriorReading = "";                // 선리딩된 내역을 상태바에 표시하기 위한 스트링 변수
        #endregion

        /// <summary>
        /// 메뉴상단표시위치
        /// </summary>
        private int m_nTopPos = 0;
        private string m_sPosMenuKeyIn = "";

        /// <summary>
        /// frmSaleMain 호출자 설정
        /// </summary>
        private string m_sSaleMainCaller = "";
        public string SetSaleMainCaller { set { m_sSaleMainCaller = value; } }

        /// <summary>
        /// 상품키 구성마스터
        /// </summary>
        DataTable m_dtMstItemKeyCompnt = new DataTable();

        /// <summary>
        /// 마스터 배치 다운로드 시간
        /// </summary>
        private string m_sMstBatchDownDate = "";

        private bool AllianceCardTranMode = false; //false 취소 , true 등록
        private DateTime AllianceCardTime = new DateTime();

        private bool AllianceCardVisibleFlag2 = false;
        public int AllianceCardVisibleCnt2 = 0;

        private string m_sPluItemCode = string.Empty;                   //  20180209 미국 상품검색 후 상품 추가시 상품의 중분류로

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
        //고객 구매이력 정보 표시 시점에 상단 MOT 표시
        private DateTime BuyHistTime = new DateTime();
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

        //#20180605 해피오더 개선 start
        
        //즉시주문, 예약주문 알림
        //즉시픽업
        private int m_nTimeSync_HpOrd_Direct = 0;
        //즉시배달
        private int m_nTimeSync_HpOrd_Reserv = 0;
        
        //#20180605 해피오더 개선 end

        //#15058 해피오더 버튼 변경_20180612 start,phj
         
        /// <summary>
        /// 1분 카운트
        /// </summary>
        private int iCount = 0;
        /// <summary>
        /// 해피오더 신규버튼 (true: 활성화, false: 비활성화)
        /// </summary>
        private bool bSaleMain = true;
         
        //#15058 해피오더 버튼 변경_20180612 end,phj


        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start - #16368
        //기존
        /*
        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
        /// <summary>
        /// 해피오더 실시간 재고 알림 디스플레이 상태 (true : 디스플레이 false: 미디스플레이)
        /// </summary>
        private bool bInventoryDispStat = false;
        /// <summary>
        /// 특별한 액션이 없을 때 (1분동안보여줌)
        /// </summary>
        private int iInventoryDispCnt = -1;
        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end
        */

        //변경
        /// <summary>
        /// true: 닫기, false: 열기 
        /// </summary>
        private bool bInventoryCancel = false;
        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end - #16368


        #region 생성자, 폼로딩
        /// <summary>
        /// 생성자
        /// </summary>
        public frmSaleMain()
        {
            InitializeComponent();

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

            //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
            this.picPayBack.Paint += new System.Windows.Forms.PaintEventHandler(this.picPayBack_Gradient);
            //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

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

            m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
            m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
            m_cCustDisp = (ICustDisplayUs)sManager.InitServiceInstance(ServiceLists.ASV_CUSTDISPLAY.DLL, ServiceLists.ASV_CUSTDISPLAY.CUST_DISPLAY);
            m_cMaster = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
            m_cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
            m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
            m_cPayCancel = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PAYMENTCANCEL);
            m_cTableSvr = (ITableUs)sManager.InitServiceInstance(ServiceLists.BSV_TABLE.DLL, ServiceLists.BSV_TABLE.TABLE_SERVICE);
            m_cPosNoticeCom = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.POS_NOTICE_COM);
            m_cSvr2Tran = (ISvr2Tran)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SVR2TRAN);
            // 백그라운드 다운 데몬 기동
            m_cBackgroundDown = (IWatcherBack)sManager.InitServiceInstance(ServiceLists.AGENT_BACKGROUND_DOWN.DLL, ServiceLists.AGENT_BACKGROUND_DOWN.BACKGROUND_DOWN_MAIN);

            //17.05.18 dkshin 쇼킹박스 추가
            m_cSaleService = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);

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

            m_cSaleMainProc = new SaleMainProcess();
            
            //OLE 입력 델리게이트 생성
            delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent);


            #region 초기화 관련 설정들은 Form 생성 전 한 번만 호출되도록 생성자 쪽으로 이동(CHOCY-20160707)
            //// 세트 할인 마스터 로딩
            //m_cPluService.LoadSetMenuDisMaster();
            //// 캠페인 마스터 로딩
            //m_cCampaingMain.LoadCampaignCondition(new string[] { });

            //// 그리드 초기화
            //InitializeGrid();

            ////// 컨트롤 초기화
            //InitControl();

            ////// 메뉴 버튼 초기화 및 로드
            //LoadMenuMaster();

            ////// 기능키 버튼 초기화 및 로드
            //LoadFuncMaster();

            #endregion
        }

        //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
        #region picPayBack Paint 이벤트
        private void picPayBack_Gradient(object sender, PaintEventArgs e)
        {
            try
            {
                //picPayBack 그라데이션 처리
                #region picPayBack 그라데이션 처리
                Color startColor = Color.FromArgb(138, 147, 165);
                Color middleColor1 = Color.FromArgb(138, 147, 165);
                Color middleColor2 = Color.FromArgb(33, 44, 56);
                Color endColor = Color.FromArgb(33, 44, 56);

                LinearGradientBrush br = new LinearGradientBrush(this.picPayBack.ClientRectangle,
                                                                 System.Drawing.Color.FromArgb(255, 255, 255),
                                                                 System.Drawing.Color.Black,
                                                                 0,
                                                                 false);

                ColorBlend cb = new ColorBlend();
                //그라데이션 시작 위치 설정
                cb.Positions = new[] { 0, 1 / 10f, 1 / 2f, 1 };
                //그라데이션 시작 위치별 색상 설정
                cb.Colors = new[] { startColor, middleColor1, middleColor2, endColor };
                //그라데이션 처리 회전 각도
                br.RotateTransform(90);
                br.InterpolationColors = cb;

                e.Graphics.FillRectangle(br, this.picPayBack.ClientRectangle);
                #endregion picPayBack 그라데이션 처리

                //하단 정보 박스 테두리 색상 변경
                #region 하단 정보 박스 테두리 색상 변경
                Pen p = new Pen(Color.Black);
                Graphics g = e.Graphics;
                int variance = 1;
                //해피포인트 정보
                g.DrawRectangle(p, new Rectangle(lblHappyPoint.Location.X - variance, lblHappyPoint.Location.Y - variance, lblHappyPoint.Width + variance, lblHappyPoint.Height + variance));
                //금액 정보
                g.DrawRectangle(p, new Rectangle(lblPayAmtBack.Location.X - variance, lblPayAmtBack.Location.Y - variance, lblPayAmtBack.Width + variance, lblPayAmtBack.Height + variance));
                //결제 정보
                g.DrawRectangle(p, new Rectangle(lstPaymentList.Location.X, lstPaymentList.Location.Y - variance, lstPaymentList.Width, lstPaymentList.Height + variance));
                #endregion 하단 정보 박스 테두리 색상 변경
            }
            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 picPayBack Paint 이벤트
        //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

        private void frmSaleMain_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 + "()", "");

            #region 초기화 관련 설정들은 Form 생성 전 한 번만 호출되도록 생성자 쪽으로 이동(CHOCY-20160707)
            // 세트 할인 마스터 로딩
            m_cPluService.LoadSetMenuDisMaster();
            // 캠페인 마스터 로딩
            m_sMstBatchDownDate = m_cPosStatus.Base.MstBatchDownDate;
            m_cCampaingMain.LoadCampaignCondition(new string[] { });

            // 그리드 초기화
            InitializeGrid();

            // 컨트롤 초기화
            InitControl();

            // 메뉴 버튼 초기화 및 로드
            LoadMenuMaster();

            // 기능키 버튼 초기화 및 로드
            LoadFuncMaster();

            // 컨트롤 CLEAR
            ClearControl();

            // 프로그램 버전정보 표시
            lblPgmVersion.Text = string.Format("VER:{0}", m_cPosStatus.Ver.ProgramVer == "" ? "2016011000001" : m_cPosStatus.Ver.ProgramVer);

            if (m_cPosStatus.Base.MstDownDate.Trim() != "") lblDBVersion.Text = "MST:" + m_cPosStatus.Base.MstDownDate;

            //#20171011 영업일, 시스템일시 위치 변경 start
            //개점일자 표시
            //lblSaleDate.Text = string.Format("SaleDate : {0}", m_cPosStatus.Base.SaleDate == "" ? m_cPosStatus.Global.DateToCulture("20000101") : m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate));
            //#20171011 영업일, 시스템일시 위치 변경 end

            // 판매모드 초기화
            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;

            InitializeGrid();
            // 판매화면 초기화
            DisplayInit(false, true);
            WinSale.SetTradType(lblSaleStatus, pnlTopBg, ItemConst.TRAN_DIV.NORMAL, ItemConst.TRAN_KIND.NORMAL.SALE);
            SetOwnPartDiv(false);

            GetClientPOSVersion();//실행파일 버젼 표시; girak.kim; 2017.08.30.001
            #endregion

            PosOLEDevice.SetEventHandle(delegatePos);

            //if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
            if (m_sSaleMainCaller == PosConst.SAL_MAIN_FORM_CALLER_TYPE.TABLE_SVC)
            {
                switch (m_cPosStatus.Sale.EtcOperateMode)
                {
                    case PosConst.ETC_OPERATION_MODE.NORMAL:
                    case PosConst.ETC_OPERATION_MODE.TABLE_GROUP_PAY:
                        // 테이블 서비스에서 호출 되었을 경우 처리
                        m_cPosStatus.Sale.TableInfo = CmUtil.RPadH(m_cTrnStatus.Head.OrderFlag, 1) + CmUtil.RPadH(m_cTrnStatus.Head.FloorCd, 4) + CmUtil.RPadH(m_cTrnStatus.Head.TableNo, 4);

                        string ret = m_cTableSvr.SelectMenuOrder();
                        if (ret != UserCom.RST_OK)
                        {
                            WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0087);
                            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END;
                            tmrCustCount.Enabled = true;
                            return;
                        }

                        ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                        if (aSaleItem.Count == 0 && m_cPosStatus.Sale.EtcOperateMode != PosConst.ETC_OPERATION_MODE.NORMAL)
                        {
                            WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0087);
                            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END;
                            tmrCustCount.Enabled = true;
                            return;
                        }

                        if (aSaleItem.Count > 0)
                        {
                            // 판매중 모드 설정
                            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
                            // 판매화면 초기화
                            DisplayInit(true, false);
                            // 상품등록 내역 표시
                            DisplayItem(0, false);

                            // 판매진행상태 재설정 
                            m_cPosStatus.Sale.SaleFlow = m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NORMAL
                                                       ? PosConst.SALE_FLOW.SALE_DOING
                                                       : PosConst.SALE_FLOW.PAY_WAIT;
                        }
                        else
                        {
                            // 상품등록 대기 모드 설정
                            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
                            // 판매화면 초기화
                            DisplayInit(true, false);
                        }

                        if (m_cTrnStatus.Head.OrderFlag == PosConst.ORDER_TYPE.NORMAL)   // 테이블
                        {
                            if (m_cTrnStatus.Head.OrderPicNm.Trim() == "")
                                lblTableInfo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0176) + ": " + m_cTrnStatus.Head.FloorNm + "-" + m_cTrnStatus.Head.TableNm;
                            else
                                lblTableInfo.Text = "[" + m_cTrnStatus.Head.FloorNm + "-" + m_cTrnStatus.Head.TableNm + "]" + m_cTrnStatus.Head.OrderPicNm;
                        }
                        break;
                    case PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE:
                    default:
                        // 상품등록 대기 모드 설정
                        m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
                        // 판매화면 초기화
                        DisplayInit(true, false);
                        break;
                }

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT && m_cTrnStatus.Head.OrderFlag == PosConst.ORDER_TYPE.NORMAL)
                {
                    // 고객 수 입력 폼 설정
                    tmrCustCount.Enabled = true;
                }
                else
                {
                    // lblCustCount
                }
            }
            else if (m_sSaleMainCaller == PosConst.SAL_MAIN_FORM_CALLER_TYPE.HPORD)
            {
                // 해피오더에서 호출 되었을 경우 처리
                ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                if (aSaleItem.Count == 0)
                {
                    WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0087);
                    m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END;
                    tmrCustCount.Enabled = true;
                    return;
                }

                // 판매중 모드 설정
                m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
                // 판매화면 초기화
                DisplayInit(true, false);
                // 상품등록 내역 표시
                DisplayItem(0, false);
            }
            else
            {
                // 그 외에서 호출 되었을 경우 처리

                // 거래 초기화
                m_cDataService.InitTranHeader();
                m_cDataService.DeleteTranItem();
            }
            m_cPosStatus.Sale.ChangeCashAmt = 0;

            // 더치페이 진행중 초기화!
            m_cPosStatus.Sale.PayingDutchFlag = "";

            if (m_cPosStatus.Base.TrainingFlag == "1")
                GetTopMsgMode("0");
            else
                GetTopMsgMode("");

            // 타이머 호출
            tmrSaleTimer.Enabled = true;
            tmrDateTime.Enabled = true;

            //-------------------------------------------------
            // 만약 판매화면 초기화시
            // 해피포인트 제휴할인 변수 초기화 함수를 호출한다.
            //-------------------------------------------------
            #region 판매화면 초기화시 해피포인트 제휴할인 변수 초기화 함수를 호출한다.
            SubPriorReadingVarClear(true);
            #endregion
        }

        private void frmSaleMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            lblTopMsgMode.MpStop();
            tmrSaleTimer.Enabled = false;
            tmrDateTime.Enabled = false;
            UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
        }
        #endregion

        #region 그리드 초기화
        /// <summary>
        /// 그리드 초기화
        /// </summary>
        private void InitializeGrid()
        {
            int[] arGridItemWidth = new int[] { 0 };
            bool[] arGridItemClickEventFlag = new bool[] { true };
            string[] arGridItemText = new string[] { "" };
            StringAlignment[] arHStringAlignment = new StringAlignment[] { StringAlignment.Center };

            if (m_cPosStatus.Base.DesignType == "1")        // 1안
            {
                arGridItemWidth = new int[] { 40, 10, 175, 90, 60, 90, 100, 50, 50 };
                SaleItemGrid.DisplayItemCount = 7;
            }
            else if (m_cPosStatus.Base.DesignType == "2")   // 2안
            {
                arGridItemWidth = new int[] { 30, 10, 115, 65, 50, 70, 100, 40, 40 };
                SaleItemGrid.DisplayItemCount = 8;
            }
            else   // 3안
            {
                arGridItemWidth = new int[] { 30, 10, 115, 63, 40, 67, 75, 40, 30 };
                //arGridItemWidth = new int[] { 30, 10, 80, 70, 50, 70, 90, 40, 30 };
                SaleItemGrid.DisplayItemCount = 8;
            }
            int[] arFontSize = new int[] { 9, 10, 10, 10, 10, 10, 10, 10, 10 };

            arGridItemText = new string[] { MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0014),
                                            "",
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0015),
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0016),
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0017),
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0018),
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0019),
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0020),
                                            MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0021)};
            arHStringAlignment = new StringAlignment[] { StringAlignment.Center, StringAlignment.Center, StringAlignment.Center, StringAlignment.Center, StringAlignment.Center, StringAlignment.Center, StringAlignment.Center, StringAlignment.Center, StringAlignment.Center };
            arGridItemClickEventFlag = new bool[] { false, false, false, false, false, false, false, false, true };

            // Set Item Data Grid Information
            //SaleItemGrid.DisplayItemCount = 8;
            SaleItemGrid.GapSize = 0;
            SaleItemGrid.BackColor = Color.White;
            
            // Row Item
            GridDataItem cGridDataItem = new GridDataItem();
            cGridDataItem.GridItemBackColor = Color.FromArgb(234, 234, 234);
            cGridDataItem.GridItemBackColorClick = Color.White;
            cGridDataItem.GridItemBackImage = null;
            cGridDataItem.GridItemBackImageClick = null;
            cGridDataItem.GridItemData = new System.Collections.Hashtable();
            
            // Set Column
            for (int nLoop = 0; nLoop < arGridItemWidth.Length; nLoop++)
            {
                CsmGridExRowData cGridExRowData = new CsmGridExRowData();

                cGridExRowData.GridItemWidth = arGridItemWidth[nLoop];
                cGridExRowData.HStringAlignment = arHStringAlignment[nLoop];
                cGridExRowData.VStringAlignment = StringAlignment.Center;
                cGridExRowData.GridItemText = arGridItemText[nLoop];
                cGridExRowData.GridItemValue = arGridItemText[nLoop];

                //할인 경우 빨강색!
                if (MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0018) == arGridItemText[nLoop])
                    cGridExRowData.ForeColor = Color.Red;
                else
                    cGridExRowData.ForeColor = Color.Black;

                cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                cGridExRowData.FontSize = arFontSize[nLoop];
                
                cGridExRowData.FontStyle = FontStyle.Bold;
                cGridExRowData.ClickEventFlag = arGridItemClickEventFlag[nLoop];

                //거래 취소 경우 아이콘 삽입!
                if (MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0021) == arGridItemText[nLoop])
                {
                    cGridExRowData.GridRowImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.ITEM_GRID_HDR_DEL);
                }

                // Add Column
                cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);
            }

            // Grid Data Header 설정
            SaleItemGrid.SetGridDataHeader(35, cGridDataItem, GRID_EX_ITEM_BORDER_STYLE.BOTTOM, 1, Color.FromArgb(234, 234, 234));
            SaleItemGrid.Invalidate();
        }
        #endregion

        #region 컨트롤 초기화
        /// <summary>
        /// 폼 컨트롤 초기화
        /// </summary>
        private void InitControl()
        {
            try
            {
                this.SuspendLayout();

                FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);
                FormManager.SetFormAllControlColor(this, BaseCom.NxImgPath);

                //btnMenu.Font = new Font("돋움", btnMenu.Font.Size, btnMenu.Font.Style);

                lblTopMsgMode.csmMoveFont = new Font(m_cPosStatus.Base.FONT, 21);

                //폼 크기 설정
                this.Location = new Point(0, 0);
                this.Size = new Size(1024, 768);

                //picTopBg.BackgroundImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MAIN_TOP_BG);
                picFooterBg.BackgroundImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MAIN_FOOTER_BG);

                picSaleBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.SALE_BG + m_cPosStatus.Base.DesignType + ".png");

                //BtnPayCanc.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_PAY_MAIN_FUNC_PRESS);
                //BtnPayMain.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_PAY_MAIN_FUNC_PRESS);

                picWeb.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.WEB_ICON);
                picWeb.Tag = "ON";
                lblWeb.Tag = "0";

                // 라벨 초기화 및 다국어 처리
                lblQtySaleAmt.Text = PosConst.SALE_DISP_SPCL_CHAR.QTY_AMT_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0035);
                lblDiscountAmt.Text = PosConst.SALE_DISP_SPCL_CHAR.DC_AMT_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0036);
                lblVatSvc.Text = PosConst.SALE_DISP_SPCL_CHAR.VAT_SVC_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0981);
                lblRecvedAmt.Text = PosConst.SALE_DISP_SPCL_CHAR.RECV_AMT_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0366);
                //lblNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                lblNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                btnSubMenuExit.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0040);

                lblPayQtySaleAmt.Text = PosConst.SALE_DISP_SPCL_CHAR.QTY_AMT_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0035);
                lblPayDiscountAmt.Text = PosConst.SALE_DISP_SPCL_CHAR.DC_AMT_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0036);
                lblPayRecvAmt.Text = PosConst.SALE_DISP_SPCL_CHAR.RECV_AMT_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0366);
                //lblPayNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                lblPayNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                lblPayVatSvc.Text = PosConst.SALE_DISP_SPCL_CHAR.VAT_SVC_CHR + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0981);

                lblOffLine.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1020);

                if (string.IsNullOrEmpty(lblOffLine.Text) == true)
                    lblOffLine.Text = "The currently offline. Please check your nework.";

                padInPut.BtnMinusEnable = true;
                padInPut.BtnPlusEnable = true;
                padInPut.BtnQtyEnable = true;
                padInPut.BtnSearchEnable = true;

                padInPut.QtyBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0017);
                padInPut.ClearBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0817);
                padInPut.SearchBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1018);

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

                pnlBuyHist.Visible = false;


                //#20180524 구매이력조회 상단 패널 사이즈 조정 start,phj
                //적용 시 주석처리하고 아래 것으로 변경
                //pnlBuyHistMot.BackColor = Color.FromArgb(20, 92, 180);
                //pnlBuyHistMot.ForeColor = Color.White;
                //lblBuyHistMot.BackColor = Color.FromArgb(20, 92, 180);
                //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, 20180510
                //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                pnlBuyHistMot.Visible = false;
                if (m_cPosStatus.Sale.ScreenSizeUser == 800)
                {
                    //#20180524 구매이력조회 상단 패널 사이즈 조정 start,phj
                    //기존
                    //FormManager.SetControlSize(pnlBuyHistMot, 0, 0, 645, 50, 12);
                    //FormManager.SetControlSize(lblBuyHistMot, 0, 0, 645, 50, 12);
                    //변경
                    FormManager.SetControlSize(pnlBuyHistMot, 0, 0, 645, 100, 16);
                    FormManager.SetControlSize(lblBuyHistMot, 0, 0, 645, 100, 16);
                    //#20180524 구매이력조회 상단 패널 사이즈 조정 end,phj
                }
                else
                {
                    //#20180524 구매이력조회 상단 패널 사이즈 조정 start,phj
                    //기존 
                    //FormManager.SetControlSize(pnlBuyHistMot, 0, 0, 1024, 50, 12);
                    //FormManager.SetControlSize(lblBuyHistMot, 0, 0, 1024, 50, 12);
                    //변경
                    FormManager.SetControlSize(pnlBuyHistMot, 0, 0, 1024, 100, 16);
                    FormManager.SetControlSize(lblBuyHistMot, 0, 0, 1024, 100, 16);
                    //#20180524 구매이력조회 상단 패널 사이즈 조정 end,phj
                }
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

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

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

                SetCmsRichTbMotMsg(rtbMotSale, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.SALE_WAIT_MOT, "");

                InitControlLocation();

                //시작 MOT 사용 여부
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT026), "0") == "0")
                {
                    pnlMotSale.Visible = false;
                }
                else
                {
                    pnlMotSale.Visible = true;
                }

                Color clrBtnBack = Color.FromArgb(231, 233, 236); //CmUtil.GetColorToString(m_cPosStatus.Mst.ThemeColor);

                btnItemGridDown.BackColor = clrBtnBack;
                btnItemGridBottom.BackColor = clrBtnBack;
                btnItemGridTop.BackColor = clrBtnBack;
                btnItemGridUp.BackColor = clrBtnBack;

                if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
                {
                    lblIFStatus1.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0459), 0, 0, 0);
                }
                else
                {
                    lblIFStatus1.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1009), 0, 0, 0);
                }
                lblIFStatus2.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0464), 0);
                lblIFStatus3.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0465), 0);

                //if(CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT035), "0") == "0")
                //{
                //    lblIFStatus1.Visible = false;
                //}

                //if(CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT036), "0") == "0")
                //{
                //    lblIFStatus2.Visible = false;
                //}

                //if(CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT037), "0") == "0")
                //{
                //    lblIFStatus3.Visible = false;
                //}

                lblAnniv.Text = "";
                lblAnniv.Tag = "";

                TopMenuLocation();


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

                //버튼 초기화
                BtnPayCanc.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0044);
                BtnPayMain.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0045);

                lblPayStep1.Text = string.Format("STEP 1\r\n━\r\n{0}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0046));
                lblPayStep2.Text = string.Format("STEP 2\r\n━\r\n{0}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0047));
                lblPayStep3.Text = string.Format("STEP 3\r\n━\r\n{0}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0048));


                picMotPayImg.Parent = pnlCardMot;

                PayListInit();

                // 기능기 초기화
                LoadFuncMasterPayment();

                SetSaleMot();

            }
            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
            {
                this.ResumeLayout(false);
            }
        }

        /// <summary>
        /// 상단 표시 메뉴 처리
        /// </summary>
        private void TopMenuLocation()
        {
            int iBasciLocation = 0;


            try
            {

                if (m_cPosStatus.Sale.ScreenSizeUser == 800)
                {
                    //800
                    iBasciLocation = 220;
                }
                else
                {
                    //1024
                    iBasciLocation = 263;
                }


                //온도표시
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT039), "0") != "1")
                {
                    pnlIFStatus4.Visible = false;
                }
                else
                {
                    pnlIFStatus4.Visible = true;

                    pnlIFStatus4.Location = new Point(iBasciLocation, 25);

                    iBasciLocation = iBasciLocation + pnlIFStatus4.Width;
                }


                //#15058 해피오더 버튼 변경_20180612 start,phj
                PnlNewHPOrd_Disp.Visible = false;
                NewHPOrd_Disp2.Visible = false;
                NewHPOrd_Disp.Visible = false;
                //#15058 해피오더 버튼 변경_20180612 end,phj

                //해피오더 
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT035), "0") == "0")
                {
                    lblIFStatus1.Visible = false;

                    //#15058 해피오더 버튼 변경_20180612 start,phj
                    bSaleMain = false;
                    //#15058 해피오더 버튼 변경_20180612 end,phj
                }
                else
                {
                    if(m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
                    {
                        lblIFStatus1.Size = new Size(260, 21);
                    }
                    else
                    {
                        lblIFStatus1.Size = new Size(260, 21);
                    }

                    lblIFStatus1.Visible = true;
                    lblIFStatus1.Location = new Point(iBasciLocation, 25);
                    iBasciLocation = iBasciLocation + lblIFStatus1.Width;

                    //#15058 해피오더 버튼 변경_20180612 start,phj
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT035) == "1")
                    {
                        //#20180605 해피오더 개선 start - 20180618
                        //기존
                        /*
                        PnlNewHPOrd_Disp.Size = new Size(260, 21);
                        PnlNewHPOrd_Disp.Width = lblIFStatus1.Width;
                        PnlNewHPOrd_Disp.Height = 50; //lblIFStatus1.Height;
                        PnlNewHPOrd_Disp.Top = 0; //lblIFStatus1.Top;
                        PnlNewHPOrd_Disp.Left = lblIFStatus1.Left;
                        PnlNewHPOrd_Disp.Location = lblIFStatus1.Location; // new Point(iBasciLocation, 25); 
                        PnlNewHPOrd_Disp.Visible = false;
                        */

                        //변경
                        PnlNewHPOrd_Disp.Size = new Size(260, 21);
                        PnlNewHPOrd_Disp.Width = lblIFStatus1.Width;
                        PnlNewHPOrd_Disp.Left = lblIFStatus1.Left;
                        PnlNewHPOrd_Disp.Top = 0;
                        PnlNewHPOrd_Disp.Height = 50;

                        bSaleMain = true;
                        //#20180605 해피오더 개선 start - 20180618
                    }
                    //#15058 해피오더 버튼 변경_20180612 end,phj
                    
                }

                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start - #16368
                //기존
                /*
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
                iInventoryDispCnt = -1;
                bInventoryDispStat = false;
                lb_HPOInventoryAlram.Visible = false;
                lb_HPOInventoryAlram2.Visible = false;
                Pnl_HPOInventoryAlram.Visible = false;

                if (PosMstManager.GetPosOption(POS_OPTION.OPT518) == "1")
                {
                    if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT035), "0") == "0")
                    {
                        Pnl_HPOInventoryAlram.Location = new Point(iBasciLocation, 25);
                        Pnl_HPOInventoryAlram.Size = new Size(260, 21);
                        Pnl_HPOInventoryAlram.Width = lblIFStatus1.Width; // lblIFStatus1.Width;
                        Pnl_HPOInventoryAlram.Left = lblIFStatus1.Left;
                        Pnl_HPOInventoryAlram.Top = 0;
                        Pnl_HPOInventoryAlram.Height = 50;
                    }
                    else
                    {
                        Pnl_HPOInventoryAlram.Size = new Size(260, 21);
                        Pnl_HPOInventoryAlram.Width = PnlNewHPOrd_Disp.Width;
                        Pnl_HPOInventoryAlram.Left = PnlNewHPOrd_Disp.Left + PnlNewHPOrd_Disp.Width;
                        Pnl_HPOInventoryAlram.Top = 0;
                        Pnl_HPOInventoryAlram.Height = 50;
                    }
                }
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end
                */

                //변경
                bInventoryCancel = false;

                lb_HPOInventoryAlram.Visible = false;
                lb_HPOInventoryAlram2.Visible = false;
                Pnl_HPOInventoryAlram.Visible = false;

                if (PosMstManager.GetPosOption(POS_OPTION.OPT518) == "1")
                {
                    if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT035), "0") == "0")
                    {
                        Pnl_HPOInventoryAlram.Location = new Point(iBasciLocation, 25);
                        Pnl_HPOInventoryAlram.Size = new Size(260, 21);
                        Pnl_HPOInventoryAlram.Width = lblIFStatus1.Width; // lblIFStatus1.Width;
                        Pnl_HPOInventoryAlram.Left = lblIFStatus1.Left;
                        Pnl_HPOInventoryAlram.Top = 0;
                        Pnl_HPOInventoryAlram.Height = 50;
                    }
                    else
                    {
                        Pnl_HPOInventoryAlram.Size = new Size(260, 21);
                        Pnl_HPOInventoryAlram.Width = PnlNewHPOrd_Disp.Width;
                        Pnl_HPOInventoryAlram.Left = PnlNewHPOrd_Disp.Left + PnlNewHPOrd_Disp.Width;
                        Pnl_HPOInventoryAlram.Top = 0;
                        Pnl_HPOInventoryAlram.Height = 50;
                    }
                }
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end - #16368


                //빚은몰
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT036), "0") == "0")
                {
                    lblIFStatus2.Visible = false;
                }
                else
                {
                    lblIFStatus2.Visible = true;

                    lblIFStatus2.Location = new Point(iBasciLocation, 25);

                    iBasciLocation = iBasciLocation + lblIFStatus2.Width;

                }

                //이지웰
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT037), "0") == "0")
                {
                    lblIFStatus3.Visible = false;
                }
                else
                {
                    lblIFStatus3.Visible = true;

                    lblIFStatus3.Location = new Point(iBasciLocation, 25);

                    iBasciLocation = iBasciLocation + lblIFStatus3.Width;

                }

                //점주 알바 점수 표시
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT019), "1") == "1")
                {
                    lblOwnerPart.Visible = true;
                    if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR)
                    {
                        lblOwnerPart.Size = new Size(182, 21);
                        lblOwnerPart.Text = string.Format("{0}:0{2}/{1}:0{2}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0733), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0732), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0734));
                    }
                    else
                    {
                        lblOwnerPart.Size = new Size(95, 21);
                        lblOwnerPart.Text = string.Format("{0}:0{1}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0732), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0734));
                    }

                    lblOwnerPart.Location = new Point(iBasciLocation, 25);
                    iBasciLocation = iBasciLocation + lblOwnerPart.Width;
                }
                else
                {
                    lblOwnerPart.Visible = false;
                    lblOwnerPart.Text = "";
                }

                //기념일 배송
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT020), "0") != "0")
                {
                    lblAnniv.Text = string.Format("{0}:0", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0742));
                    lblAnniv.Visible = true;

                    lblAnniv.Location = new Point(iBasciLocation, 25);
                    iBasciLocation = iBasciLocation + lblAnniv.Width;
                }
                else
                {
                    lblAnniv.Visible = false;
                    lblAnniv.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);
            }
        }



        /// <summary>
        /// 상단 메세지 설정(연습모드, 긴급메세지)
        /// </summary>
        /// <param name="sType"></param>
        private void GetTopMsgMode(string sType)
        {
            try
            {
                if (sType == "0")
                {
                    if (lblTopMsgMode.MpStatus() == false)
                    {

                        lblTopMsgMode.MpIntervalMove(20);

                        if (m_cPosStatus.Sale.ScreenSizeUser == 800) 
                            FormManager.SetControlSize(lblTopMsgMode, 95, 0, 645, 50, 21);
                        else
                            FormManager.SetControlSize(lblTopMsgMode, 125, 0, 820, 50, 21);
                        
                        
                        // 연습모드 설정
                        Cosmos.UI.CsmPosMovePanel.MovePanelInfo cMoveInfo = new Cosmos.UI.CsmPosMovePanel.MovePanelInfo();

                        cMoveInfo.BackColor = Color.Red;
                        cMoveInfo.ForeColor = Color.Yellow;
                        cMoveInfo.MoveKind = "4";   //0:좌->우, 1:우->좌, 4:깜박임
                        cMoveInfo.MoveText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0402);

                        lblTopMsgMode.MpAdd(cMoveInfo);
                        lblTopMsgMode.Visible = true;
                        lblTopMsgMode.MpStart();
                    }
                }
                else if (sType == "1")
                {
                    EmgNoticeProcess();

                    // 백그라운드 프로그램 적용 확인 메시지
                    POSProgramApplyCheck();
                }
                else
                {
                    //중지
                    lblTopMsgMode.MpStop();
                    lblTopMsgMode.Visible = 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);

            }
        }

        #region 점주알바점수, 유해상품, 입고등록, 배송정보, 기념일배송 처리
        /// <summary>
        /// 점주알바점수, 유해상품, 입고등록, 배송정보, 기념일배송 처리
        /// </summary>
        /// <param name="sType"></param>
        private void SelectEtcNoticeCom()
        {
            string[] aOutParam = new string[] { "0", "0" };

            try
            {
                string sDpsStr = string.Empty;

                if (lblOwnerPart.Visible == true)
                {
                    if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
                    {
                        sDpsStr = string.Format("{0}:#1{1}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0732), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0734));
                    }
                    else
                    {
                        sDpsStr = string.Format("{0}:#1{2}/{1}:#2{2}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0733), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0732), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0734));
                    }


                    //01 - 점주알바모드
                    if (m_cDataCommon.GetEtcNoticeProcess("01", ref aOutParam) == false)
                    {
                        aOutParam = new string[] { "0", "0" };
                    }

                    lblOwnerPart.Text = sDpsStr.Replace("#1", aOutParam[0]).Replace("#2", aOutParam[1]);
                }

                //02 - 유해상품
                //03 - 입고등록 확인
                //04 - 배송정보
                //05 - 기념일 배송
                m_cDataCommon.GetEtcNoticeProcess("02", ref aOutParam);


                //기념일 배송
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT020), "0") != "0")
                {
                    m_cDataCommon.GetEtcNoticeProcess("05", ref aOutParam);

                    if (aOutParam == null || aOutParam[0] == "0")
                    {
                        lblAnniv.Text = string.Format("{0}:0", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0742));
                        lblAnniv.Tag = "";
                    }
                    else
                    {
                        lblAnniv.Text = string.Format("{0}:{1}", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0742), aOutParam[0]);
                        lblAnniv.Tag = "1";
                    }

                }

            }
            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 ShowOwnerPartWeb(string sKeyCode)
        //{
        //    try
        //    {
        //        //WEB 링크 조회

        //        IDataServiceUs cWebBiz = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.WEB_POS);

        //        if (cWebBiz != null)
        //        {

        //            string sUrl = string.Empty;

        //            sUrl = (string)cWebBiz.GetData(new string[] { sKeyCode });

        //            if (sUrl != UserCom.ERROR && sUrl != null)
        //            {
        //                System.Diagnostics.Process.Start("iexplore.exe", CmUtil.MidH(sUrl, 31, CmUtil.LenH(sUrl)));
        //            }
        //        }


        //    }
        //    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 점주알바점수, 유해상품, 입고등록, 배송정보, 기념일배송 처리


        /// <summary>
        /// 판매 화면 MOT
        /// </summary>
        private void SetSaleMot()
        {
            try
            {
                //시작 MOT 사용 유무!
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT026), "0") == "1")
                {

                    pnlMotSale.BackgroundImage = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, m_cPosStatus.ScnMst.WaitImg);
                    if (pnlMotSale.BackgroundImage != null)
                        CmUtil.FileCopy(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + m_cPosStatus.ScnMst.WaitImg, BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + ImageManager.SALE_MOT_WAIT, false);
                    else
                        pnlMotSale.BackgroundImage = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, ImageManager.SALE_MOT_WAIT);
                    
                }

            }
            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 ClearControl()
        {
            try
            {
                lblStoreNm.Text = CmUtil.GetDataRowStr(PosMstManager.GetMstStore(), PosMst.MST_STORE.DATA.STORNM);    //점포명
                lblPosNo.Text = "POS " + m_cPosStatus.Base.PosNo;
                lblTranNo.Text = m_cPosStatus.Base.TradeNo;
                lblCashier.Text = m_cPosStatus.Base.CashierName;
                lblEtc.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0038);
                lblWeb.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0039);
                lblTableInfo.Text = string.Empty;

                txtQtySaleAmt.Text = "0";
                txtDiscountAmt.Text = "0";
                txtRecvedAmt.Text = "0";
                txtNetSaleAmt.Text = "0";
                txtVatSvc.Text = "0";

                pnlSubMenu.Visible = false;
                pnlSetMenu.Visible = false;
                pnlFlavour.Visible = false;

                picCampaign.Visible = false;

                //===========================================================================================
                // 결제화면 
                rtbMotMain.Text = "";
                txtPayQtySaleAmt.Text = "0";
                txtPayDiscountAmt.Text = "0";
                txtPayNetSaleAmt.Text = "0";
                txtPayRecvAmt.Text = "0";
                txtPayVatSvc.Text = "0";
                
                SlideSetMenuBtn();
                pnlMenuSlide.Location = new Point(0, 50);
                pnlMenuSlide.Visible = false;

                picTempInfo.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_BG);
                pnlTempInfo.Location = new Point(0, 50);
                pnlTempInfo.Visible = 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);
            }
        }

        /// <summary>
        /// 시안별 컨트롤 위치 설정
        /// </summary>
        private void InitControlLocation()
        {
            try
            {
                //FormManager.SetControlSize(pnlSaleMainBack, 0, 50, 1024, 698);
                FormManager.SetControlSize(picSaleBack, 0, 50, 1024, 698);
                FormManager.SetControlSize(pnlPayMainBack, 0, 1025, 1024, 696);
                FormManager.SetControlSize(picPayBack, 0, 0, 1024, 696);

                FormManager.SetControlSize(lblTopMsgMode, 127, 0, 903, 50);
                                
                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    FormManager.SetControlSize(pnlMenuSlide, 0, 56, 1024, 90);          // 상단 메뉴

                    FormManager.SetControlSize(pnlMenuLClass, 0, 329, 712, 57);		    // 메뉴키 대분류
                    FormManager.SetControlSize(btnMenuLClassUp, 0, 0, 60, 57);
                    FormManager.SetControlSize(btnMenuLClass, 61, 0, 590, 57);          // 메뉴키 대분류
                    FormManager.SetControlSize(btnMenuLClassDn, 652, 0, 60, 57);
                    btnMenuLClass.SetFuncButtonCount(1, 5);                             // 버튼갯수 설정

                    FormManager.SetControlSize(pnlMenuMClass, 0, 386, 142, 360);	    // 메뉴키 중분류
                    int nMFixCnt = CmUtil.IntParse(m_cPosStatus.ScnMst.FixItemClssCnt) / 2;
                    if (nMFixCnt == 0)
                    {
                        btnMenuMClassFix.Visible = false;
                        FormManager.SetControlSize(btnMenuMClass, 0, 0, 142, 360);	    // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(5, 2);                         // 버튼갯수 설정
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuMClassFix, 0, 0, 142, 72 * nMFixCnt);	    // 메뉴키 중분류
                        btnMenuMClassFix.SetFuncButtonCount(nMFixCnt, 2);                           // 버튼갯수 설정
                        btnMenuMClassFix.Visible = true;
                        FormManager.SetControlSize(btnMenuMClass, 0, (72 * nMFixCnt) + 1, 142, 360 - (72 * nMFixCnt));// 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(5 - nMFixCnt, 2);                          // 버튼갯수 설정
                    }

                    //FormManager.SetControlSize(btnMenuMClass, 0, 386, 142, 360);	    // 메뉴키 중분류
                    //btnMenuMClass.SetFuncButtonCount(5, 2);                             // 버튼갯수 설정

                    FormManager.SetControlSize(pnlSubMenu, 0, 329, 712, 417);           // 부가메뉴
                    FormManager.SetControlSize(btnSubMenuGrp, 1, 0, 109, 370);          // 부가메뉴-그룹
                    FormManager.SetControlSize(btnSubMenuExit, 1, 371, 109, 47);        // 부가메뉴-종료
                    FormManager.SetControlSize(btnSubMenuDtl, 111, 0, 600, 417);        // 부가메뉴-상품
                    FormManager.SetControlSize(pnlSetMenu, 0, 329, 712, 417);           // 세트메뉴
                    FormManager.SetControlSize(lblSetMenuTitle, 2, 2, 708, 29);         // 세트메뉴-타이틀
                    FormManager.SetControlSize(btnSetMenu, 2, 35, 708, 380);            // 세트메뉴-상품
                    FormManager.SetControlSize(pnlFlavour, 0, 329, 712, 417);           // 플레이버

                    FormManager.SetControlSize(lblItemGrid, 0, 50, 711, 278);           // 상품그리드 BACK
                    FormManager.SetControlSize(SaleItemGrid, 0, 50, 665, 278);          // 상품그리드
                    FormManager.SetControlSize(txtInPut, 716, 331, 302, 49);            // 입력박스
                    FormManager.SetControlSize(padInPut, 712, 385, 309, 361);           // 키패드
                    padInPut.DesignType = DesignType.Design_A;

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
                    FormManager.SetControlSize(pnlBuyHist, 712, 327, 309, 419);         // 고객 구매이력 정보
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end
                    
                    FormManager.SetControlSize(btnFuncItem, 0, 768, 322, 247);          // 기능(오른쪽)

                    FormManager.SetControlSize(btnItemGridTop, 668, 50, 43, 68);        // 상품그리드 TOP
                    FormManager.SetControlSize(btnItemGridUp, 668, 120, 43, 68);        // 상품그리드 UP
                    FormManager.SetControlSize(btnItemGridDown, 668, 190, 43, 68);      // 상품그리드 DOWN
                    FormManager.SetControlSize(btnItemGridBottom, 668, 260, 43, 68);    // 상품그리드 BOTTOM

                    //#20171109 대기화면 위치 변경 및 상품목록 유지 start
                    //기존
                    FormManager.SetControlSize(pnlMotSale, 0, 50, 712, 278);            // 판매대기 MOT
                    //변경
                    //FormManager.SetControlSize(pnlMotSale, 0, 329, 712, 417);            // 판매대기 MOT
                    //#20171109 대기화면 위치 변경 및 상품목록 유지 end
                    FormManager.SetControlSize(rtbMotSale, 4, 135, 700, 136);           // 판매대기 MOT

                    FormManager.SetControlSize(picCampaign, 712, 51, 311, 110);         // 캠페인 이미지

                    // 포함 여부에 따라 부가세 표시 
                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        FormManager.SetControlSize(btnFuncSale, 712, 182, 312, 144);        // 기능(왼쪽)

                        FormManager.SetControlSize(lblAmtBack, 712, 51, 312, 131);          // 금액배경(잔상제거용)
                        FormManager.SetControlSize(lblQtySaleAmt,  716,  51, 131, 24);        // 수량총금액(24)
                        FormManager.SetControlSize(lblDiscountAmt, 716,  75, 131, 24);       // 할인금액
                        FormManager.SetControlSize(lblVatSvc,      716,  99, 131, 24);           // 봉사료,부가세
                        FormManager.SetControlSize(lblRecvedAmt,   716, 123, 131, 24);        // 받은금액
                        FormManager.SetControlSize(lblNetSaleAmt,  716, 149, 131, 28);       // 받을금액(27)
                        FormManager.SetControlSize(txtQtySaleAmt,  847,  51, 177, 24);        // 수량총금액
                        FormManager.SetControlSize(txtDiscountAmt, 847,  75, 177, 24);       // 할인금액
                        FormManager.SetControlSize(txtVatSvc,      847,  99, 177, 24);           // 봉사료,부가세
                        FormManager.SetControlSize(txtRecvedAmt,   847, 123, 177, 24);        // 받을금액
                        FormManager.SetControlSize(txtNetSaleAmt,  847, 149, 180, 28);       // 받을금액

                        lblVatSvc.Visible = true;
                        txtVatSvc.Visible = true;
                    }
                    else
                    {
                        FormManager.SetControlSize(btnFuncSale, 712, 162, 312, 164);        // 기능(왼쪽)

                        FormManager.SetControlSize(lblAmtBack, 712, 51, 311, 110);          // 금액배경(잔상제거용)
                        FormManager.SetControlSize(lblQtySaleAmt,  716, 55,  131, 24);        // 수량총금액(24)
                        FormManager.SetControlSize(lblDiscountAmt, 716, 79,  131, 24);       // 할인금액
                        FormManager.SetControlSize(lblRecvedAmt,   716, 103, 131, 24);        // 받은금액
                        FormManager.SetControlSize(lblNetSaleAmt,  716, 127, 131, 29);       // 받을금액(27)
                        FormManager.SetControlSize(txtQtySaleAmt,  847, 55, 177, 24);        // 수량총금액
                        FormManager.SetControlSize(txtDiscountAmt, 847, 79, 177, 24);       // 할인금액
                        FormManager.SetControlSize(txtRecvedAmt,   847, 103, 177, 24);        // 받을금액
                        FormManager.SetControlSize(txtNetSaleAmt,  847, 127, 180, 29);       // 받을금액

                        lblVatSvc.Visible = false;
                        txtVatSvc.Visible = false;
                    }
                    
                    lblAmtBack.BackColor = Color.FromArgb(204, 204, 204);               // 금액배경(잔상제거용)
                    lblQtySaleAmt.BackColor = Color.FromArgb(204, 204, 204);            // 수량총금액
                    lblDiscountAmt.BackColor = Color.FromArgb(204, 204, 204);           // 할인금액
                    lblVatSvc.BackColor = Color.FromArgb(204, 204, 204);                // 봉사료,부가세
                    lblRecvedAmt.BackColor = Color.FromArgb(204, 204, 204);
                    lblNetSaleAmt.BackColor = Color.FromArgb(204, 204, 204);            // 받을금액
                    txtQtySaleAmt.BackColor = Color.FromArgb(204, 204, 204);            // 수량총금액
                    txtDiscountAmt.BackColor = Color.FromArgb(204, 204, 204);           // 할인금액
                    txtVatSvc.BackColor = Color.FromArgb(204, 204, 204);                // 봉사료,부가세
                    txtRecvedAmt.BackColor = Color.FromArgb(204, 204, 204);
                    txtNetSaleAmt.BackColor = Color.FromArgb(204, 204, 204);            // 받을금액
                    
                    lblQtySaleAmt.ForeColor = Color.Black;                              // 수량총금액
                    lblDiscountAmt.ForeColor = Color.Black;                             // 할인금액

                    lblVatSvc.ForeColor = Color.Black;                                  // 봉사료,부가세

                    lblRecvedAmt.ForeColor = Color.Black; //Color.FromArgb(128, 128, 255);
                    lblNetSaleAmt.ForeColor = Color.Brown;                              // 받을금액
                    txtQtySaleAmt.ForeColor = Color.Black;                              // 수량총금액
                    txtDiscountAmt.ForeColor = Color.Black;                             // 할인금액
                    txtVatSvc.ForeColor = Color.Black;                                  // 봉사료,부가세
                    txtRecvedAmt.ForeColor = Color.Black; //Color.FromArgb(128, 128, 255);
                    txtNetSaleAmt.ForeColor = Color.Brown;                              // 받을금액
                }
                else if (m_cPosStatus.Base.DesignType == "2")   // 2안
                {
                    FormManager.SetControlSize(pnlMenuSlide, 0, 56, 1024, 90);          // 상단 메뉴

                    FormManager.SetControlSize(pnlMenuLClass, 0, 50, 100, 90);		    // 메뉴키 대분류
                    FormManager.SetControlSize(btnMenuLClass, 0, 0, 100, 90);		    // 메뉴키 대분류
                    btnMenuLClass.SetFuncButtonCount(2, 1);                             // 버튼갯수 설정

                    FormManager.SetControlSize(pnlMenuMClass, 100, 50, 924, 90);	    // 메뉴키 중분류
                    int nMFixCnt = CmUtil.IntParse(m_cPosStatus.ScnMst.FixItemClssCnt) / 2;
                    if (nMFixCnt == 0)
                    {
                        btnMenuMClassFix.Visible = false;
                        FormManager.SetControlSize(btnMenuMClass, 0, 0, 924, 90);	    // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10);                        // 버튼갯수 설정
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuMClassFix, 0, 0, 92 * nMFixCnt, 90);	    // 메뉴키 중분류
                        btnMenuMClassFix.SetFuncButtonCount(2, nMFixCnt);                           // 버튼갯수 설정
                        btnMenuMClassFix.Visible = true;
                        FormManager.SetControlSize(btnMenuMClass, 1 + (92 * nMFixCnt), 0, 923 - (92 * nMFixCnt), 90);   // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10 - nMFixCnt);                         // 버튼갯수 설정
                    }

                    //FormManager.SetControlSize(btnMenuMClass, 100, 50, 924, 90);	    // 메뉴키 중분류
                    //btnMenuMClass.SetFuncButtonCount(2, 10);                            // 버튼갯수 설정

                    FormManager.SetControlSize(pnlSubMenu, 523, 141, 500, 355);         // 부가메뉴
                    FormManager.SetControlSize(btnSubMenuGrp, 1, 1, 110, 303);          // 부가메뉴-그룹
                    FormManager.SetControlSize(btnSubMenuExit, 1, 305, 110, 49);        // 부가메뉴-종료
                    FormManager.SetControlSize(btnSubMenuDtl, 112, 1, 387, 353);        // 부가메뉴-상품
                    FormManager.SetControlSize(pnlSetMenu, 523, 141, 500, 355);         // 세트메뉴
                    FormManager.SetControlSize(lblSetMenuTitle, 2, 3, 496, 29);         // 세트메뉴-타이틀
                    FormManager.SetControlSize(btnSetMenu, 2, 35, 496, 318);            // 세트메뉴-상품
                    FormManager.SetControlSize(pnlFlavour, 0, 497, 1024, 249);          // 플레이버

                    FormManager.SetControlSize(lblItemGrid, 0, 141, 522, 356);          // 상품그리드 BACK
                    FormManager.SetControlSize(SaleItemGrid, 0, 141, 522, 315);         // 상품그리드
                    FormManager.SetControlSize(txtInPut, 381, 502, 314, 24);            // 입력박스
                    FormManager.SetControlSize(padInPut, 376, 531, 324, 215);           // 키패드
                    padInPut.DesignType = DesignType.Design_B;

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
                    FormManager.SetControlSize(pnlBuyHist, 376, 498, 324, 248);         // 고객 구매이력 정보
                    //csmLabel5.Border
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

                    FormManager.SetControlSize(btnFuncSale, 0, 637, 375, 109);          // 기능(왼쪽)
                    FormManager.SetControlSize(btnFuncItem, 701, 497, 322, 248);        // 기능(오른쪽)

                    FormManager.SetControlSize(btnItemGridTop, 2, 457, 129, 40);        // 상품그리드 TOP
                    FormManager.SetControlSize(btnItemGridUp, 132, 457, 129, 40);       // 상품그리드 UP
                    FormManager.SetControlSize(btnItemGridDown, 262, 457, 129, 40);     // 상품그리드 DOWN
                    FormManager.SetControlSize(btnItemGridBottom, 392, 457, 130, 40);   // 상품그리드 BOTTOM

                    //#20171109 대기화면 위치 변경 및 상품목록 유지 start
                    //기존
                    FormManager.SetControlSize(pnlMotSale, 0, 141, 522, 356);           // 판매대기 MOT
                    //변경
                    //FormManager.SetControlSize(pnlMotSale, 502, 141, 522, 356);           // 판매대기 MOT
                    //#20171109 대기화면 위치 변경 및 상품목록 유지 end
                    FormManager.SetControlSize(rtbMotSale, 4, 239, 509, 110);           // 판매대기 MOT

                    //FormManager.SetControlSize(picCampaign, 1, 498, 375, 138);          // 캠페인 이미지
                    FormManager.SetControlSize(picCampaign, 1, 498, 375, 247);          // 캠페인 이미지

                    // 포함 여부에 따라 부가세 표시 
                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                        FormManager.SetControlSize(lblQtySaleAmt,  10, 500, 150, 25);        // 수량총금액
                        FormManager.SetControlSize(lblDiscountAmt, 10, 525, 150, 25);       // 할인금액
                        FormManager.SetControlSize(lblVatSvc,      10, 550, 150, 25);			// 봉사료,부가세
                        FormManager.SetControlSize(lblRecvedAmt,   10, 575, 150, 25);
                        FormManager.SetControlSize(lblNetSaleAmt,  10, 600, 150, 35);        // 받을금액

                        FormManager.SetControlSize(txtQtySaleAmt,  170, 500, 200, 25);       // 수량총금액
                        FormManager.SetControlSize(txtDiscountAmt, 170, 525, 200, 25);      // 할인금액
                        FormManager.SetControlSize(txtVatSvc,      170, 550, 200, 25);			// 봉사료,부가세
                        FormManager.SetControlSize(txtRecvedAmt,   170, 575, 200, 25);
                        FormManager.SetControlSize(txtNetSaleAmt,  170, 600, 202, 35);       // 받을금액

                        lblVatSvc.Visible = true;
                        txtVatSvc.Visible = true;

                    }
                    else
                    {
                        FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                        FormManager.SetControlSize(lblQtySaleAmt, 10, 500, 150, 30);        // 수량총금액
                        FormManager.SetControlSize(lblDiscountAmt, 10, 530, 150, 30);       // 할인금액
                        FormManager.SetControlSize(lblRecvedAmt, 10, 560, 150, 30);         // 받은금액
                        FormManager.SetControlSize(lblNetSaleAmt, 10, 590, 150, 40);        // 받을금액

                        FormManager.SetControlSize(txtQtySaleAmt, 170, 500, 200, 30);       // 수량총금액
                        FormManager.SetControlSize(txtDiscountAmt, 170, 530, 200, 30);      // 할인금액
                        FormManager.SetControlSize(txtRecvedAmt, 170, 560, 200, 30);        // 받은금액
                        FormManager.SetControlSize(txtNetSaleAmt, 170, 590, 202, 40);       // 받을금액

                        lblVatSvc.Visible = false;
                        txtVatSvc.Visible = false;
                    }
                       
                    //FormManager.SetControlSize(lblQtySaleAmt, 18, 500, 146, 30);        // 수량총금액
                    //FormManager.SetControlSize(lblDiscountAmt, 18, 530, 146, 30);       // 할인금액
                    //FormManager.SetControlSize(lblRecvedAmt, 18, 560, 146, 35);
                    //FormManager.SetControlSize(lblNetSaleAmt, 18, 595, 146, 35);        // 받을금액
                    //FormManager.SetControlSize(txtQtySaleAmt, 176, 500, 194, 30);       // 수량총금액
                    //FormManager.SetControlSize(txtDiscountAmt, 176, 530, 194, 30);      // 할인금액
                    //FormManager.SetControlSize(txtRecvedAmt, 173, 560, 200, 35);
                    //FormManager.SetControlSize(txtNetSaleAmt, 173, 595, 200, 35);       // 받을금액

                    lblAmtBack.BackColor = Color.FromArgb(68, 68, 68);                  // 금액배경(잔상제거용)
                    lblQtySaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 수량총금액
                    lblDiscountAmt.BackColor = Color.FromArgb(68, 68, 68);              // 할인금액
                    lblVatSvc.BackColor = Color.FromArgb(68, 68, 68);                   // 봉사료,부가세
                    lblRecvedAmt.BackColor = Color.FromArgb(68, 68, 68);
                    lblNetSaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 받을금액
                    txtQtySaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 수량총금액
                    txtDiscountAmt.BackColor = Color.FromArgb(68, 68, 68);              // 할인금액
                    txtVatSvc.BackColor = Color.FromArgb(68, 68, 68);                   // 봉사료,부가세
                    txtRecvedAmt.BackColor = Color.FromArgb(68, 68, 68);                // 
                    txtNetSaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 받을금액

                    lblQtySaleAmt.ForeColor = Color.White;                              // 수량총금액
                    lblDiscountAmt.ForeColor = Color.White;                             // 할인금액

                    lblVatSvc.ForeColor = Color.White;                                  // 봉사료,부가세

                    lblRecvedAmt.ForeColor = Color.White; //Color.FromArgb(128, 128, 255);              // 
                    lblNetSaleAmt.ForeColor = Color.FromArgb(247, 202, 12);             // 받을금액
                    txtQtySaleAmt.ForeColor = Color.White;                              // 수량총금액
                    txtDiscountAmt.ForeColor = Color.White;                             // 할인금액
                    txtVatSvc.ForeColor = Color.White;                                  // 봉사료,부가세
                    txtRecvedAmt.ForeColor = Color.White; //Color.FromArgb(128, 128, 255);
                    txtNetSaleAmt.ForeColor = Color.FromArgb(247, 202, 12);             // 받을금액
                }
                else
                {
                    FormManager.SetControlSize(pnlMenuSlide, 0, 56, 1024, 90);          // 상단 메뉴

                    FormManager.SetControlSize(pnlMenuLClass, 0, 50, 100, 90);		    // 메뉴키 대분류
                    FormManager.SetControlSize(btnMenuLClass, 0, 0, 100, 90);		    // 메뉴키 대분류
                    btnMenuLClass.SetFuncButtonCount(2, 1);                             // 버튼갯수 설정

                    FormManager.SetControlSize(pnlMenuMClass, 100, 50, 924, 90);	    // 메뉴키 중분류
                    int nMFixCnt = CmUtil.IntParse(m_cPosStatus.ScnMst.FixItemClssCnt) / 2;
                    if (nMFixCnt == 0)
                    {
                        btnMenuMClassFix.Visible = false;
                        FormManager.SetControlSize(btnMenuMClass, 0, 0, 924, 90);	    // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10);                        // 버튼갯수 설정
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuMClassFix, 0, 0, 92 * nMFixCnt, 90);	    // 메뉴키 중분류
                        btnMenuMClassFix.SetFuncButtonCount(2, nMFixCnt);                           // 버튼갯수 설정
                        btnMenuMClassFix.Visible = true;
                        FormManager.SetControlSize(btnMenuMClass, 1 + (92 * nMFixCnt), 0, 923 - (92 * nMFixCnt), 90);   // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10 - nMFixCnt);                         // 버튼갯수 설정
                    }
                    //FormManager.SetControlSize(btnMenuMClass, 100, 50, 924, 90);	    // 메뉴키 중분류
                    //btnMenuMClass.SetFuncButtonCount(2, 10);                            // 버튼갯수 설정

                    FormManager.SetControlSize(pnlSubMenu, 481, 141, 542, 355);         // 부가메뉴
                    FormManager.SetControlSize(btnSubMenuGrp, 2, 0, 109, 303);          // 부가메뉴-그룹
                    FormManager.SetControlSize(btnSubMenuExit, 2, 305, 109, 47);        // 부가메뉴-종료
                    FormManager.SetControlSize(btnSubMenuDtl, 112, 0, 429, 352);        // 부가메뉴-상품
                    FormManager.SetControlSize(pnlSetMenu, 481, 141, 542, 355);         // 세트메뉴
                    FormManager.SetControlSize(lblSetMenuTitle, 2, 3, 538, 29);         // 세트메뉴-타이틀
                    FormManager.SetControlSize(btnSetMenu, 2, 35, 538, 318);            // 세트메뉴-상품
                    FormManager.SetControlSize(pnlFlavour, 0, 497, 1024, 249);          // 플레이버

                    FormManager.SetControlSize(lblItemGrid, 0, 141, 480, 356);          // 상품그리드 BACK
                    FormManager.SetControlSize(SaleItemGrid, 0, 141, 480, 315);         // 상품그리드
                    FormManager.SetControlSize(btnSubMenuCommGrp, 481, 141, 95, 356);   // 부가메뉴
                    FormManager.SetControlSize(btnSubMenuCommDtl, 576, 141, 96, 356);   // 부가메뉴
                    //FormManager.SetControlSize(btnSubMenuCommDtl, 481, 141, 189, 356);         // 부가메뉴
                    FormManager.SetControlSize(txtInPut, 381, 502, 314, 24);            // 입력박스
                    FormManager.SetControlSize(padInPut, 376, 531, 324, 215);           // 키패드
                    padInPut.DesignType = DesignType.Design_C;

                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
                    FormManager.SetControlSize(pnlBuyHist, 376, 498, 324, 248);         // 고객 구매이력 정보
                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end

                    FormManager.SetControlSize(btnFuncSale, 0, 637, 375, 109);          // 기능(왼쪽)
                    FormManager.SetControlSize(btnFuncItem, 701, 497, 322, 248);        // 기능(오른쪽)

                    FormManager.SetControlSize(btnItemGridTop, 2, 457, 119, 40);        // 상품그리드 TOP
                    FormManager.SetControlSize(btnItemGridUp, 122, 457, 119, 40);       // 상품그리드 UP
                    FormManager.SetControlSize(btnItemGridDown, 242, 457, 119, 40);     // 상품그리드 DOWN
                    FormManager.SetControlSize(btnItemGridBottom, 362, 457, 118, 40);   // 상품그리드 BOTTOM

                    //#20171109 대기화면 위치 변경 및 상품목록 유지 start
                    //기존
                    FormManager.SetControlSize(pnlMotSale, 0, 141, 480, 356);           // 판매대기 MOT
                    //변경
                    //FormManager.SetControlSize(pnlMotSale, 481, 141, 542, 355);           // 판매대기 MOT
                    //#20171109 대기화면 위치 변경 및 상품목록 유지 end
                    FormManager.SetControlSize(rtbMotSale, 4, 239, 472, 110);           // 판매대기 MOT

                    //FormManager.SetControlSize(picCampaign, 1, 498, 375, 138);          // 캠페인 이미지
                    FormManager.SetControlSize(picCampaign, 1, 498, 375, 247);          // 캠페인 이미지

                    // 포함 여부에 따라 부가세 표시 
                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                        FormManager.SetControlSize(lblQtySaleAmt, 10, 500, 150, 25);        // 수량총금액
                        FormManager.SetControlSize(lblDiscountAmt, 10, 525, 150, 25);       // 할인금액
                        FormManager.SetControlSize(lblVatSvc, 10, 550, 150, 25);			// 봉사료,부가세
                        FormManager.SetControlSize(lblRecvedAmt, 10, 575, 150, 25);
                        FormManager.SetControlSize(lblNetSaleAmt, 10, 600, 150, 35);        // 받을금액

                        FormManager.SetControlSize(txtQtySaleAmt, 170, 500, 200, 25);       // 수량총금액
                        FormManager.SetControlSize(txtDiscountAmt, 170, 525, 200, 25);      // 할인금액
                        FormManager.SetControlSize(txtVatSvc, 170, 550, 200, 25);			// 봉사료,부가세
                        FormManager.SetControlSize(txtRecvedAmt, 170, 575, 200, 25);
                        FormManager.SetControlSize(txtNetSaleAmt, 170, 600, 202, 35);       // 받을금액

                        lblVatSvc.Visible = true;
                        txtVatSvc.Visible = true;

                    }
                    else
                    {
                        FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                        FormManager.SetControlSize(lblQtySaleAmt, 10, 500, 150, 30);        // 수량총금액
                        FormManager.SetControlSize(lblDiscountAmt, 10, 530, 150, 30);       // 할인금액
                        FormManager.SetControlSize(lblRecvedAmt, 10, 560, 150, 30);         // 받은금액
                        FormManager.SetControlSize(lblNetSaleAmt, 10, 590, 150, 40);        // 받을금액

                        FormManager.SetControlSize(txtQtySaleAmt, 170, 500, 200, 30);       // 수량총금액
                        FormManager.SetControlSize(txtDiscountAmt, 170, 530, 200, 30);      // 할인금액
                        FormManager.SetControlSize(txtRecvedAmt, 170, 560, 200, 30);        // 받은금액
                        FormManager.SetControlSize(txtNetSaleAmt, 170, 590, 202, 40);       // 받을금액

                        lblVatSvc.Visible = false;
                        txtVatSvc.Visible = false;
                    }
                    //FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                    //FormManager.SetControlSize(lblQtySaleAmt, 18, 500, 146, 30);        // 수량총금액
                    //FormManager.SetControlSize(lblDiscountAmt, 18, 530, 146, 30);       // 할인금액
                    //FormManager.SetControlSize(lblRecvedAmt, 18, 560, 146, 35);
                    //FormManager.SetControlSize(lblNetSaleAmt, 18, 595, 146, 35);        // 받을금액
                    //FormManager.SetControlSize(txtQtySaleAmt, 176, 500, 194, 30);       // 수량총금액
                    //FormManager.SetControlSize(txtDiscountAmt, 176, 530, 194, 30);      // 할인금액
                    //FormManager.SetControlSize(txtRecvedAmt, 173, 560, 200, 35);
                    //FormManager.SetControlSize(txtNetSaleAmt, 173, 595, 200, 35);       // 받을금액

                    //// 포함 여부에 따라 부가세 표시 
                    //if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    //{
                    //    FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                    //    FormManager.SetControlSize(lblQtySaleAmt, 18, 500, 146, 30);        // 수량총금액
                    //    FormManager.SetControlSize(lblDiscountAmt, 18, 524, 146, 30);       // 할인금액
                    //    FormManager.SetControlSize(lblVatSvc, 18, 547, 146, 30);			// 봉사료,부가세
                    //    FormManager.SetControlSize(lblRecvedAmt, 18, 571, 146, 35);
                    //    FormManager.SetControlSize(lblNetSaleAmt, 18, 598, 146, 35);        // 받을금액
                    //    FormManager.SetControlSize(txtQtySaleAmt, 176, 500, 194, 30);       // 수량총금액
                    //    FormManager.SetControlSize(txtDiscountAmt, 176, 524, 194, 30);      // 할인금액
                    //    FormManager.SetControlSize(txtVatSvc, 176, 547, 194, 30);			// 봉사료,부가세
                    //    FormManager.SetControlSize(txtRecvedAmt, 173, 571, 200, 35);
                    //    FormManager.SetControlSize(txtNetSaleAmt, 173, 598, 200, 35);       // 받을금액

                    //    lblVatSvc.Visible = true;
                    //    txtVatSvc.Visible = true;

                    //}
                    //else
                    //{
                    //    FormManager.SetControlSize(lblAmtBack, 1, 498, 375, 138);           // 금액배경(잔상제거용)
                    //    FormManager.SetControlSize(lblQtySaleAmt, 18, 500, 146, 30);        // 수량총금액
                    //    FormManager.SetControlSize(lblDiscountAmt, 18, 530, 146, 30);       // 할인금액
                    //    FormManager.SetControlSize(lblRecvedAmt, 18, 560, 146, 35);
                    //    FormManager.SetControlSize(lblNetSaleAmt, 18, 595, 146, 35);        // 받을금액
                    //    FormManager.SetControlSize(txtQtySaleAmt, 176, 500, 194, 30);       // 수량총금액
                    //    FormManager.SetControlSize(txtDiscountAmt, 176, 530, 194, 30);      // 할인금액
                    //    FormManager.SetControlSize(txtRecvedAmt, 173, 560, 200, 35);
                    //    FormManager.SetControlSize(txtNetSaleAmt, 173, 595, 200, 35);       // 받을금액

                    //    lblVatSvc.Visible = false;
                    //    txtVatSvc.Visible = false;
                    //}



                    lblAmtBack.BackColor = Color.FromArgb(68, 68, 68);                  // 금액배경(잔상제거용)
                    lblQtySaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 수량총금액
                    lblDiscountAmt.BackColor = Color.FromArgb(68, 68, 68);              // 할인금액
                    lblVatSvc.BackColor = Color.FromArgb(68, 68, 68);                   // 봉사료,부가세
                    lblRecvedAmt.BackColor = Color.FromArgb(68, 68, 68);
                    lblNetSaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 받을금액
                    txtQtySaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 수량총금액
                    txtDiscountAmt.BackColor = Color.FromArgb(68, 68, 68);              // 할인금액
                    txtVatSvc.BackColor = Color.FromArgb(68, 68, 68);                   // 봉사료,부가세
                    txtRecvedAmt.BackColor = Color.FromArgb(68, 68, 68);                // 
                    txtNetSaleAmt.BackColor = Color.FromArgb(68, 68, 68);               // 받을금액

                    lblQtySaleAmt.ForeColor = Color.White;                              // 수량총금액
                    lblDiscountAmt.ForeColor = Color.White;                             // 할인금액
                    lblVatSvc.ForeColor = Color.White;                                  // 봉사료,부가세
                    lblRecvedAmt.ForeColor = Color.White; //Color.FromArgb(128, 128, 255);              // 
                    lblNetSaleAmt.ForeColor = Color.FromArgb(247, 202, 12);             // 받을금액
                    txtQtySaleAmt.ForeColor = Color.White;                              // 수량총금액
                    txtDiscountAmt.ForeColor = Color.White;                             // 할인금액
                    txtVatSvc.ForeColor = Color.White;                                  // 봉사료,부가세
                    txtRecvedAmt.ForeColor = Color.White; //Color.FromArgb(128, 128, 255);
                    txtNetSaleAmt.ForeColor = Color.FromArgb(247, 202, 12);             // 받을금액
                }

                // 포함 여부에 따라 부가세 표시 
                if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                {
                    FormManager.SetControlSize(lblPayQtySaleAmt,  220, 545, 123, 21);
                    FormManager.SetControlSize(lblPayDiscountAmt, 220, 570, 123, 21);
                    FormManager.SetControlSize(lblPayVatSvc,      220, 595, 123, 21);
                    FormManager.SetControlSize(lblPayRecvAmt,     220, 620, 123, 21);
                    FormManager.SetControlSize(lblPayNetSaleAmt,  220, 645, 123, 30);

                    FormManager.SetControlSize(txtPayQtySaleAmt,  335, 545, 190, 21);
                    FormManager.SetControlSize(txtPayDiscountAmt, 345, 570, 180, 21);
                    FormManager.SetControlSize(txtPayVatSvc,      345, 595, 180, 21);
                    FormManager.SetControlSize(txtPayRecvAmt,     345, 620, 180, 21);
                    FormManager.SetControlSize(txtPayNetSaleAmt,  345, 645, 182, 30);

                    lblPayVatSvc.Visible = true;
                    txtPayVatSvc.Visible = true;
                }
                else
                {

                    //FormManager.SetControlSize(lblPayQtySaleAmt, 233, 550, 120, 21);
                    //FormManager.SetControlSize(lblPayDiscountAmt, 232, 579, 120, 21);
                    //FormManager.SetControlSize(lblPayRecvAmt, 228, 612, 123, 21);
                    //FormManager.SetControlSize(lblPayNetSaleAmt, 229, 646, 123, 21);

                    //FormManager.SetControlSize(txtPayQtySaleAmt, 354, 550, 165, 21);
                    //FormManager.SetControlSize(txtPayDiscountAmt, 357, 579, 162, 21);
                    //FormManager.SetControlSize(txtPayRecvAmt, 355, 604, 168, 34);
                    //FormManager.SetControlSize(txtPayNetSaleAmt, 356, 638, 168, 34);

                    FormManager.SetControlSize(lblPayQtySaleAmt,  220, 550, 123, 21);
                    FormManager.SetControlSize(lblPayDiscountAmt, 220, 580, 123, 21);
                    FormManager.SetControlSize(lblPayRecvAmt,     220, 610, 123, 21);
                    FormManager.SetControlSize(lblPayNetSaleAmt,  220, 640, 123, 30);
                    
                    FormManager.SetControlSize(txtPayQtySaleAmt,  335, 550, 190, 21);
                    FormManager.SetControlSize(txtPayDiscountAmt, 345, 580, 180, 21);
                    FormManager.SetControlSize(txtPayRecvAmt,     345, 610, 180, 21);
                    FormManager.SetControlSize(txtPayNetSaleAmt,  345, 640, 182, 30);

                    lblPayVatSvc.Visible = false;
                    txtPayVatSvc.Visible = false;

                    //*** MoonSeokWoo 2017.12.12 Add
                    pnlPayMainBack.Visible = false;
                    //*** MoonSeokWoo 2017.12.12 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);
            }
        }
        #endregion

        #region 메뉴 컨트롤 초기화 및 메뉴 마스터 로딩

        private void btnMenuLClassUp_Click(object sender, EventArgs e)
        {
            try
            {
                if ((UI.CsmButton)sender == btnMenuLClassUp)
                {
                    btnMenuLClass.FuncUpDown("UP");
                    //if (btnMenuLClass.FuncUpDown("UP") == true)
                    //{
                    //    btnMenuLClassUp.Text = "<";
                    //    btnMenuLClassDn.Text = ">";
                    //}
                    //else
                    //    btnMenuLClassUp.Text = "■";
                }
                else if ((UI.CsmButton)sender == btnMenuLClassDn)
                {
                    btnMenuLClass.FuncUpDown("DN");
                    //if (btnMenuLClass.FuncUpDown("DN") == true)
                    //{
                    //    btnMenuLClassDn.Text = ">";
                    //    btnMenuLClassUp.Text = "<";
                    //}
                    //else
                    //    btnMenuLClassDn.Text = "■";
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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>
        /// <returns>성공/실패</returns>
        public bool LoadMenuMaster()
        {
            string sFirstLCode = "";    // 첫번째 그룹
            try
            {
                // 상품키 구성 마스터 로딩
                DataRow drItemKeyCompnt = PosMstManager.GetMstScreen();
                m_dtMstItemKeyCompnt = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_KEY_COMPNT.TABLE_NAME);
                if (m_dtMstItemKeyCompnt == null || m_dtMstItemKeyCompnt.Rows.Count <= 0)
                {
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0056); // 상품키 구성 마스터가 없습니다
                }
                else
                {
                    drItemKeyCompnt = m_dtMstItemKeyCompnt.Rows[0];
                    foreach (DataRow dr in m_dtMstItemKeyCompnt.Rows)
                    {
                        if (m_cPosStatus.Base.StoreNo == CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.SUB_STOR_CD)) drItemKeyCompnt = dr;
                    }
                }

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 메뉴 대분류 로딩
                DataTable dtLClass = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_KEY_L_CLSS.TABLE_NAME);
                if (dtLClass == null || dtLClass.Rows.Count <= 0)
                {
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0057); // 메뉴 대분류 마스터가 없습니다
                }

                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    btnMenuLClass.VisibleUpDown = false;

                    btnMenuLClassUp.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_COLOR));
                    btnMenuLClassUp.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR));
                    btnMenuLClassUp.Visible = true;
                    btnMenuLClassDn.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_COLOR));
                    btnMenuLClassDn.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR));
                    btnMenuLClassDn.Visible = true;
                }
                else
                {
                    btnMenuLClass.VisibleUpDown = false;
                    btnMenuLClassUp.Visible = false;
                    btnMenuLClassDn.Visible = false;
                }

                pnlMenuLClass.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_COLOR));

                btnMenuLClass.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_COLOR));
                btnMenuLClass.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR));
                btnMenuLClass.SelectedBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_COLOR));
                btnMenuLClass.SelectedForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_FONT_COLOR));
                btnMenuLClass.BackColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_COLOR));
                btnMenuLClass.ForeColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR));
                btnMenuLClass.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                if (dtLClass != null)
                {
                    int nL_CLSS_SEQ = 0;
                    foreach (DataRow dr in dtLClass.Rows)
                    {
                        nL_CLSS_SEQ++;
                        Cosmos.UI.CsmFunc.FuncBtnInfo cMenuInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                        cMenuInfo.sGroupCode = "00";    // 분류코드
                        cMenuInfo.nSeqNo = nL_CLSS_SEQ; //CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY_L_CLSS.DATA.SEQ);            // 표시순번
                        // 대분류키값 = 본부키구분(1) + 서브점포코드 + 대분류 코드
                        cMenuInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_L_CLSS.DATA.HQ_KEY_DIV), 1)
                            + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_L_CLSS.DATA.SUB_SHOP_CD) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_L_CLSS.DATA.L_CLSS_CD);   // 코드

                        string sCOMPLEX_SHOP_STOR_NM = "";
                        if (m_cPosStatus.Mst.ComplexShopType == "2")  // 0:단독매장,1:복합매장구성점포,2:복합매장점포
                        {
                            sCOMPLEX_SHOP_STOR_NM = CmUtil.GetDataRowStr(dr, PosMst.MST_COMPLEX_SHOP_STOR.DATA.COMPLEX_SHOP_STOR_NM);
                        }
                        if (sCOMPLEX_SHOP_STOR_NM == "")
                            cMenuInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_L_CLSS.DATA.L_CLSS_NM);   // 명
                        else
                            cMenuInfo.sFuncText = sCOMPLEX_SHOP_STOR_NM + PosConst.CRLF + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_L_CLSS.DATA.L_CLSS_NM);   // 명

                        cMenuInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_COLOR));         // 백 컬러
                        cMenuInfo.cForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR));    // 명 컬러
                        cMenuInfo.fFontSize = 10;                       // 명 폰트 사이즈
                        cMenuInfo.nButtonSize = 0;                      // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        btnMenuLClass.AddFuncButtonInfo(cMenuInfo);
                    }
                }

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 메뉴 중분류 로딩
                DataTable dtMClass = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_KEY_CLSS.TABLE_NAME);
                if (dtMClass == null || dtMClass.Rows.Count <= 0)
                {
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0058); // 메뉴 중분류 마스터가 없습니다
                }
                pnlMenuMClass.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));

                btnMenuMClassFix.VisibleUpDown = false;
                btnMenuMClassFix.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                btnMenuMClassFix.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));
                btnMenuMClassFix.SelectedBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                btnMenuMClassFix.SelectedForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR));
                btnMenuMClassFix.BackColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_COLOR));
                btnMenuMClassFix.ForeColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));

                btnMenuMClassFix.FontSizeUpDown = 10;
                btnMenuMClassFix.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                if (dtMClass != null)
                {
                    foreach (DataRow dr in dtMClass.Rows)
                    {
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.FIX_YN) != "1") continue;

                        if (m_cPosStatus.Mst.ComplexShopType == "2")  // 0:단독매장,1:복합매장구성점포,2:복합매장점포
                        {
                            foreach (DataRow drCompnt in m_dtMstItemKeyCompnt.Rows)
                            {
                                if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.SUB_STOR_CD) == CmUtil.GetDataRowStr(drCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.SUB_STOR_CD))
                                {
                                    drItemKeyCompnt = drCompnt;
                                }
                            }
                        }

                        Cosmos.UI.CsmFunc.FuncBtnInfo cMenuInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                        cMenuInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.SUB_STOR_CD) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.L_CLSS_CD);         // 서브점포코드+분류코드
                        cMenuInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.GRP_SEQ);                 // 표시순번
                        // 중분류키값 = (서브점포+대분류)(20)+고정여부+중분류순번
                        cMenuInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.SUB_STOR_CD) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.L_CLSS_CD), 20)
                            + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.FIX_YN) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.GRP_SEQ);
                        cMenuInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.ITEM_GRP_NM);          // 명

                        cMenuInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.BACKGR_COLOR));                             // 백 컬러
                        cMenuInfo.cForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));   // 명 컬러
                        cMenuInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.FONT_SIZE);        // 명 폰트 사이즈
                        cMenuInfo.nButtonSize = 0;                      // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        btnMenuMClassFix.AddFuncButtonInfo(cMenuInfo);
                    }
                }

                btnMenuMClass.VisibleUpDown = true;
                btnMenuMClass.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                btnMenuMClass.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));
                btnMenuMClass.SelectedBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                btnMenuMClass.SelectedForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR));
                btnMenuMClass.BackColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_COLOR));
                btnMenuMClass.ForeColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));
                btnMenuMClass.UpDownSeqUsed = false;
                btnMenuMClass.FontSizeUpDown = 10;
                btnMenuMClass.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                if (dtMClass != null)
                {
                    foreach (DataRow dr in dtMClass.Rows)
                    {
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.FIX_YN) == "1") continue;

                        if (m_cPosStatus.Mst.ComplexShopType == "2")  // 0:단독매장,1:복합매장구성점포,2:복합매장점포
                        {
                            foreach (DataRow drCompnt in m_dtMstItemKeyCompnt.Rows)
                            {
                                if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.SUB_STOR_CD) == CmUtil.GetDataRowStr(drCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.SUB_STOR_CD))
                                {
                                    drItemKeyCompnt = drCompnt;
                                }
                            }
                        }

                        Cosmos.UI.CsmFunc.FuncBtnInfo cMenuInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                        cMenuInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.SUB_STOR_CD) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.L_CLSS_CD);         // 서브점포코드+분류코드
                        cMenuInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.GRP_SEQ);                 // 표시순번
                        // 중분류키값 = (서브점포+대분류)(20)+고정여부+중분류순번
                        cMenuInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.SUB_STOR_CD) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.L_CLSS_CD), 20)
                            + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.FIX_YN) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.GRP_SEQ);
                        cMenuInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.ITEM_GRP_NM);          // 명

                        cMenuInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.BACKGR_COLOR));                             // 백 컬러
                        cMenuInfo.cForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));   // 명 컬러
                        cMenuInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_KEY_CLSS.DATA.FONT_SIZE);        // 명 폰트 사이즈
                        cMenuInfo.nButtonSize = 0;                      // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        btnMenuMClass.AddFuncButtonInfo(cMenuInfo);
                    }
                }

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 즐겨찾기 로딩
                DataTable dtMemuFix = m_cPluService.SearchMenuMaster(PosMst.MST_BOOKMK.TABLE_NAME);
                if (dtMemuFix == null || dtMemuFix.Rows.Count <= 0)
                {
                    // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0000); // 즐겨찾기 마스터가 없습니다
                }

                int nMenuFixRows = 2, nMenuFixCols = 5;
                SetMenuRowColCnt(CmUtil.GetDataRowInt(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_ITEM_KEY_ARRAY), ref nMenuFixRows, ref nMenuFixCols);

                if (CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_USE_YN) != "1"
                    || CmUtil.GetDataRowInt(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_ITEM_KEY_ARRAY) == 0) nMenuFixRows = 0;

                btnMenuFix.Visible = (nMenuFixRows == 0) ? false : true;
                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    FormManager.SetControlSize(pnlMenu, 143, 386, 568, 360);
                    pnlMenu.BackColor = CmUtil.GetColorToString("223223223");

                    FormManager.SetControlSize(btnMenuFix, 0, 0, 568, 72 * nMenuFixRows - 1);
                    FormManager.SetControlSize(btnMenu, 0, (72 * nMenuFixRows), 568, 360 - (72 * nMenuFixRows));

                }
                else if (m_cPosStatus.Base.DesignType == "2")   // 2안
                {
                    FormManager.SetControlSize(pnlMenu, 523, 141, 500, 356);
                    pnlMenu.BackColor = CmUtil.GetColorToString("223223223");

                    FormManager.SetControlSize(btnMenuFix, 0, 0, 500, 58 * nMenuFixRows - 1);
                    FormManager.SetControlSize(btnMenu, 0, (58 * nMenuFixRows), 500, 355 - (58 * nMenuFixRows));
                }
                else
                {
                    FormManager.SetControlSize(pnlMenu, 673, 141, 350, 356);
                    pnlMenu.BackColor = CmUtil.GetColorToString("223223223");

                    FormManager.SetControlSize(btnMenuFix, 0, 0, 350, 58 * nMenuFixRows - 1);
                    FormManager.SetControlSize(btnMenu, 0, (58 * nMenuFixRows), 350, 355 - (58 * nMenuFixRows));
                }

                btnMenuFix.SetMenuButtonCount(nMenuFixRows, nMenuFixCols);                  // 메뉴버튼갯수 설정
                btnMenuFix.BackColor = CmUtil.GetColorToString("223223223");
                btnMenuFix.VisibleUpDown = false;
                btnMenuFix.BackColorUpDown = Color.White;
                btnMenuFix.ForeColorUpDown = Color.Black;

                string sUseMenuImage = PosMstManager.GetPosOption(POS_OPTION.OPT105);           // 메뉴 이미지 사용여부

                btnMenuFix.ClearMenuButtonInfo();                     // 설정된 메뉴정보 초기화
                
                // 메뉴정보 설정
                if (dtMemuFix != null)
                {
                    foreach (DataRow dr in dtMemuFix.Rows)
                    {
                        Cosmos.UI.CsmMenu.MenuBtnInfo cMenuInfo = new Cosmos.UI.CsmMenu.MenuBtnInfo();

                        cMenuInfo.sClassCode = "00";      // 대분류코드
                        cMenuInfo.sGroupCode = "0000";    // 중분류코드

                        cMenuInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY.DATA.SEQ);                 // 표시순번
                        // 메뉴 키 값 = 부가메뉴팝업여부(1) + 서버점포코드(10) + 메뉴코드
                        string sMenuCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.SUBPRC_MENU_POPUP_YN), 1)
                                         + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.SUB_STOR_CD), 10)
                                         + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.ITEM_CD);
                        cMenuInfo.sMenuCode = sMenuCode;                                                                    // 메뉴 연결코드
                        cMenuInfo.sMenuName = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM);                 // 메뉴 명

                        if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0")
                            cMenuInfo.sMenuPrice = m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT));      // 메뉴 가격
                        else
                            cMenuInfo.sMenuPrice = m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT));      // 메뉴 가격

                        cMenuInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.BACKGR_COLOR));                  // 버튼 백 컬러
                        cMenuInfo.cForeColorName = Color.Black;                                             // 메뉴명 컬러
                        cMenuInfo.cForeColorPrice = Color.Red;                                            // 메뉴가격 컬러
                        cMenuInfo.fFontSizeName = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_KEY.DATA.FONT_SIZE);   // 메뉴명 폰트 사이즈
                        cMenuInfo.fFontSizePrice = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_KEY.DATA.FONT_SIZE);  // 메뉴 가격 폰트 사이즈
                        cMenuInfo.nButtonSize = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY.DATA.BTN_SIZE);        // 메뉴버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        cMenuInfo.cMenuImage = "";
                        if (sUseMenuImage != "0")
                        {
                            //MoonSeokWoo 대표코드로 변경.

                            //#20180123 상품코드 이미지 없는 경우 대표상품코드 이미지로 표시 start
                            //기존
                            //cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.RPST_ITEM_CD) + ".PNG";
                            //변경
                            cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_CD) + ".PNG";
                            if (File.Exists(cMenuInfo.cMenuImage) == false)
                            {
                                cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.RPST_ITEM_CD) + ".PNG";
                            }
                            //#20180123 상품코드 이미지 없는 경우 대표상품코드 이미지로 표시 end

                            //cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.ITEM_CD) + ".PNG";
                            //cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.ITEM_CD) + ".PNG";
                            //if (File.Exists(cMenuInfo.cMenuImage) == false)
                            //    cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG).Trim();

                            //cMenuInfo.cMenuImage = CmUtil.LoadImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG).Trim());
                        }

                        btnMenuFix.AddMenuButtonInfo(cMenuInfo);
                    }
                }
                btnMenuFix.DisplayMenuButton("00", "0000");

                // 메뉴 기본 로딩
                DataTable dtMemu = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_KEY.TABLE_NAME);
                if (dtMemu == null || dtMemu.Rows.Count <= 0)
                {
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0059); // 메뉴키 마스터가 없습니다
                }

                btnMenu.BackColor = CmUtil.GetColorToString("223223223");
                btnMenu.VisibleUpDown = true;
                btnMenu.BackColorUpDown = Color.White;
                btnMenu.ForeColorUpDown = Color.Black;

                btnMenu.ClearMenuButtonInfo();                     // 설정된 메뉴정보 초기화

                if (dtMemu != null)
                {
                    //#20171018 메뉴명 폰트 색상 변경 기능 start
                    string sFontColor = "";
                    //#20171018 메뉴명 폰트 색상 변경 기능 end

                    // 메뉴정보 설정
                    foreach (DataRow dr in dtMemu.Rows)
                    {
                        Cosmos.UI.CsmMenu.MenuBtnInfo cMenuInfo = new Cosmos.UI.CsmMenu.MenuBtnInfo();

                        cMenuInfo.sClassCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.SUB_STOR_CD) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.L_CLSS_CD);        // 대분류
                        cMenuInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.FIX_YN) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.GRP_SEQ);               // 중분류코드

                        cMenuInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY.DATA.SEQ);                 // 표시순번
                        // 메뉴 키 값 = 부가메뉴팝업여부(1) + 서버점포코드(10) + 메뉴코드
                        string sMenuCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.SUBPRC_MENU_POPUP_YN), 1)
                                         + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.SUB_STOR_CD), 10)
                                         + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.ITEM_CD);
                        cMenuInfo.sMenuCode = sMenuCode;                                                                    // 메뉴 연결코드
                        cMenuInfo.sMenuName = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM);                 // 메뉴 명

                        if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0")
                            cMenuInfo.sMenuPrice = m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT));      // 메뉴 가격
                        else
                            cMenuInfo.sMenuPrice = m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT));      // 메뉴 가격

                        cMenuInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.BACKGR_COLOR));                  // 버튼 백 컬러

                        //#20171018 메뉴명 폰트 색상 변경 기능 start
                        //기존
                        //cMenuInfo.cForeColorName = Color.FromArgb(51, 51, 51);                            // 메뉴명 컬러
                        //변경
                        
                        sFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.FONT_COLOR).Trim();
                        if (sFontColor != "")
                        {
                            cMenuInfo.cForeColorName = CmUtil.GetColorToString(sFontColor);         // 메뉴명 컬러                      
                        }
                        else
                        {
                            cMenuInfo.cForeColorName = Color.FromArgb(51, 51, 51);                  // 메뉴명 컬러
                        }
                        
                        //#20171018 메뉴명 폰트 색상 변경 기능 end

                        cMenuInfo.cForeColorPrice = Color.Red; //Color.FromArgb(102, 102, 102);                       // 메뉴가격 컬러
                        cMenuInfo.fFontSizeName = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_KEY.DATA.FONT_SIZE);   // 메뉴명 폰트 사이즈
                        cMenuInfo.fFontSizePrice = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_KEY.DATA.FONT_SIZE);  // 메뉴 가격 폰트 사이즈
                        cMenuInfo.nButtonSize = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_KEY.DATA.BTN_SIZE);        // 메뉴버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        cMenuInfo.cMenuImage = "";
                        if (sUseMenuImage != "0")
                        {
                            //MoonSeokWoo 대표코드로 변경.

                            //#20180123 상품코드 이미지 없는 경우 대표상품코드 이미지로 표시 start
                            //기존
                            //cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.RPST_ITEM_CD) + ".PNG";
                            //변경
                            cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_CD) + ".PNG";
                            if (File.Exists(cMenuInfo.cMenuImage) == false)
                            {
                                cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.RPST_ITEM_CD) + ".PNG";
                            }
                            //#20180123 상품코드 이미지 없는 경우 대표상품코드 이미지로 표시 end

                            //cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY.DATA.ITEM_CD) + ".PNG";
                            //if (File.Exists(cMenuInfo.cMenuImage) == false)
                            //    cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG).Trim();

                            //cMenuInfo.cMenuImage = CmUtil.LoadImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG).Trim());
                        }
                        btnMenu.AddMenuButtonInfo(cMenuInfo);
                    }
                }

                sFirstLCode = btnMenuLClass.DisplayFuncButton("00");                // 대분류 버튼 표시
                btnMenuLClass_FuncClickHandler(btnMenuLClass, sFirstLCode);         // 첫번째 대분류 선택 처리(메뉴 버튼 그리기)
                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>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void btnMenuLClass_FuncClickHandler(object sender, string sFuncCode)
        {
            string sHQ_KEY_DIV = "", sLClassCode = "", sMClassCode = "";

            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                {
                    //충전, 판매 거래 경우
                    if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == false)
                        pnlSetMenu.Visible = false;
                    pnlSubMenu.Visible = false;
                }

                // 대분류 선택 효과
                btnMenuLClass.SelectFuncButton(sFuncCode);
                if (sFuncCode != "")
                {
                    // 대분류키값 = 본부키구분(1) + 서브점포코드 + 대분류 코드
                    sHQ_KEY_DIV = sFuncCode.Substring(0, 1);
                    sLClassCode = sFuncCode.Substring(1);
                }

                // 중분류 위치 조정
                int nMFixCnt = CmUtil.IntParse(m_cPosStatus.ScnMst.FixItemClssCnt) / 2;
                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    if (sHQ_KEY_DIV != "1" || nMFixCnt == 0)
                    {
                        btnMenuMClassFix.Visible = false;
                        FormManager.SetControlSize(btnMenuMClass, 0, 0, 142, 360);	    // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(5, 2);                         // 버튼갯수 설정
                        btnMenuMClass.SetUpDownPosition(5, 2);
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuMClassFix, 0, 0, 142, 72 * nMFixCnt);	    // 메뉴키 중분류
                        btnMenuMClassFix.SetFuncButtonCount(nMFixCnt, 2);                           // 버튼갯수 설정
                        btnMenuMClassFix.Visible = true;
                        FormManager.SetControlSize(btnMenuMClass, 0, (72 * nMFixCnt) + 1, 142, 360 - (72 * nMFixCnt));// 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(5 - nMFixCnt, 2);                          // 버튼갯수 설정
                        btnMenuMClass.SetUpDownPosition(5 - nMFixCnt, 2);
                    }
                }
                else if (m_cPosStatus.Base.DesignType == "2")   // 2안
                {
                    if (sHQ_KEY_DIV != "1" || nMFixCnt == 0)
                    {
                        btnMenuMClassFix.Visible = false;
                        FormManager.SetControlSize(btnMenuMClass, 0, 0, 924, 90);	    // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10);                        // 버튼갯수 설정
                        btnMenuMClass.SetUpDownPosition(2, 10);
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuMClassFix, 0, 0, 92 * nMFixCnt, 90);	    // 메뉴키 중분류
                        btnMenuMClassFix.SetFuncButtonCount(2, nMFixCnt);                           // 버튼갯수 설정
                        btnMenuMClassFix.Visible = true;
                        FormManager.SetControlSize(btnMenuMClass, 1 + (92 * nMFixCnt), 0, 923 - (92 * nMFixCnt), 90);   // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10 - nMFixCnt);                         // 버튼갯수 설정
                        btnMenuMClass.SetUpDownPosition(2, 10 - nMFixCnt); 
                    }
                }
                else
                {
                    if (sHQ_KEY_DIV != "1" || nMFixCnt == 0)
                    {
                        btnMenuMClassFix.Visible = false;
                        FormManager.SetControlSize(btnMenuMClass, 0, 0, 924, 90);	    // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10);                        // 버튼갯수 설정
                        btnMenuMClass.SetUpDownPosition(2, 10);
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuMClassFix, 0, 0, 92 * nMFixCnt, 90);	    // 메뉴키 중분류
                        btnMenuMClassFix.SetFuncButtonCount(2, nMFixCnt);                           // 버튼갯수 설정
                        btnMenuMClassFix.Visible = true;
                        FormManager.SetControlSize(btnMenuMClass, 1 + (92 * nMFixCnt), 0, 923 - (92 * nMFixCnt), 90);   // 메뉴키 중분류
                        btnMenuMClass.SetFuncButtonCount(2, 10 - nMFixCnt);                         // 버튼갯수 설정
                        btnMenuMClass.SetUpDownPosition(2, 10 - nMFixCnt);
                    }
                }

                // 복합매장 중분류 구성
                DataRow drItemKeyCompnt = PosMstManager.GetMstScreen();
                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                if (m_cPosStatus.Mst.ComplexShopType == "2")  // 0:단독매장,1:복합매장구성점포,2:복합매장점포
                {
                    foreach (DataRow drCompnt in m_dtMstItemKeyCompnt.Rows)
                    {
                        if (sLClassCode.StartsWith(CmUtil.GetDataRowStr(drCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.SUB_STOR_CD)))
                        {
                            drItemKeyCompnt = drCompnt;
                        }
                    }

                    pnlMenuMClass.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));

                    btnMenuMClassFix.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                    btnMenuMClassFix.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));
                    btnMenuMClassFix.SelectedBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                    btnMenuMClassFix.SelectedForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR));
                    btnMenuMClassFix.BackColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_COLOR));
                    btnMenuMClassFix.ForeColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));

                    btnMenuMClass.BackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                    btnMenuMClass.ForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));
                    btnMenuMClass.SelectedBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR));
                    btnMenuMClass.SelectedForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR));
                    btnMenuMClass.BackColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_COLOR));
                    btnMenuMClass.ForeColorUpDown = CmUtil.GetColorToString(CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR));

                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    int nMenuFixRows = 2, nMenuFixCols = 5;
                    SetMenuRowColCnt(CmUtil.GetDataRowInt(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_ITEM_KEY_ARRAY), ref nMenuFixRows, ref nMenuFixCols);

                    if (CmUtil.GetDataRowStr(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_USE_YN) != "1") nMenuFixRows = 0;

                    btnMenuFix.Visible = (nMenuFixRows == 0) ? false : true;
                    if (m_cPosStatus.Base.DesignType == "1")        // 1안
                    {
                        FormManager.SetControlSize(btnMenuFix, 0, 0, 568, 72 * nMenuFixRows - 1);
                        FormManager.SetControlSize(btnMenu, 0, (72 * nMenuFixRows), 568, 360 - (72 * nMenuFixRows));

                    }
                    else if (m_cPosStatus.Base.DesignType == "2")   // 2안
                    {
                        FormManager.SetControlSize(btnMenuFix, 0, 0, 500, 58 * nMenuFixRows - 1);
                        FormManager.SetControlSize(btnMenu, 0, (58 * nMenuFixRows), 500, 355 - (58 * nMenuFixRows));
                    }
                    else
                    {
                        FormManager.SetControlSize(btnMenuFix, 0, 0, 350, 58 * nMenuFixRows - 1);
                        FormManager.SetControlSize(btnMenu, 0, (58 * nMenuFixRows), 350, 355 - (58 * nMenuFixRows));
                    }
                    btnMenuFix.SetMenuButtonCount(nMenuFixRows, nMenuFixCols);                  // 메뉴버튼갯수 설정
                }
                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                // 중분류 표시
                if (sHQ_KEY_DIV == "1" && CmUtil.IntParse(m_cPosStatus.ScnMst.FixItemClssCnt) / 2 > 0)
                {
                    sMClassCode = btnMenuMClassFix.DisplayFuncButton(sLClassCode);
                    btnMenuMClass.DisplayFuncButton(sLClassCode);
                }
                else
                {
                    btnMenuMClassFix.DisplayFuncButton(sLClassCode);
                    sMClassCode = btnMenuMClass.DisplayFuncButton(sLClassCode);
                }

                // 본부키구분(sHQ_KEY_DIV) 값에 따른 메뉴키 컨트롤 갯수 설정 필요
                int nKeyLayout = 0;
                if (sHQ_KEY_DIV == "1")        // 본부키
                    nKeyLayout = CmUtil.GetDataRowInt(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.HQ_ITEMKEY_LAYOUT);
                else
                    nKeyLayout = CmUtil.GetDataRowInt(drItemKeyCompnt, PosMst.MST_ITEM_KEY_COMPNT.DATA.SHOP_ITEMKEY_LAYOUT);

                // 메뉴버튼갯수 설정
                int nRow = 0, nCol = 0;
                SetMenuRowColCnt(nKeyLayout, ref nRow, ref nCol);
                btnMenu.SetMenuButtonCount(nRow, nCol);

                // 해당 중분류의 첫번째 메뉴키 그룹 표시            
                if (sHQ_KEY_DIV == "1" && CmUtil.IntParse(m_cPosStatus.ScnMst.FixItemClssCnt) / 2 > 0)
                    btnMenuMClass_FuncClickHandler(btnMenuMClassFix, sMClassCode);
                else
                    btnMenuMClass_FuncClickHandler(btnMenuMClass, sMClassCode);
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }
        /// <summary>
        /// 메뉴 중분류 선택
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void btnMenuMClass_FuncClickHandler(object sender, string sFuncCode)
        {
            string sLClassCode = "", sMClassCode = "";
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                {
                    //충전, 판매 거래 경우
                    if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == false)
                        pnlSetMenu.Visible = false;

                    pnlSubMenu.Visible = false;
                }
                if (sender != null && (CsmFunc)sender == btnMenuMClassFix)
                {
                    btnMenuMClassFix.SelectFuncButton(sFuncCode);      // 중분류 선택 효과
                    btnMenuMClass.SelectFuncButton("");
                    btnMenuMClass.Tag = "FIX";
                }
                if (sender != null && (CsmFunc)sender == btnMenuMClass)
                {
                    btnMenuMClassFix.SelectFuncButton("");
                    btnMenuMClass.SelectFuncButton(sFuncCode);         // 중분류 선택 효과
                    btnMenuMClass.Tag = "";
                }

                if (sFuncCode != "")
                {
                    // 중분류키값 = 서브점포+대분류)(20)+고정여부+중분류순번
                    sLClassCode = sFuncCode.Substring(0, 20).Trim();
                    sMClassCode = sFuncCode.Substring(20);
                }

                // 메뉴 표시
                btnMenu.DisplayMenuButton(sLClassCode, sMClassCode);
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }
        /// <summary>
        /// 메뉴 중분류 업다운 버튼 입력 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sUpDown"></param>
        private void btnMenuMClass_UpDownClick(object sender, string sFuncCode)
        {
            string sLClassCode = "", sMClassCode = "";
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                {
                    //충전, 판매 거래 경우
                    if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == false)
                        pnlSetMenu.Visible = false;

                    pnlSubMenu.Visible = false;
                }
                if (btnMenuMClass.Tag == null || btnMenuMClass.Tag.ToString() == "")
                {
                    btnMenuMClass.SelectFuncButton(sFuncCode);         // 중분류 선택 효과
                    
                    if (sFuncCode != "")
                    {
                        // 중분류키값 = 서브점포+대분류)(20)+고정여부+중분류순번
                        sLClassCode = sFuncCode.Substring(0, 20).Trim();
                        sMClassCode = sFuncCode.Substring(20);
                    }
                    // 메뉴 표시
                    btnMenu.DisplayMenuButton(sLClassCode, sMClassCode);
                }
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }

        }
        /// <summary>
        /// 메뉴 선택
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sMenuCode"></param>
        private void btnMenu_MenuClickHandler(object sender, string sMenuCode)
        {
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                if (sMenuCode == "") return;

                string sInPutValue = txtInPut.Text;

                // 메뉴 키 값 = 부가메뉴팝업여부(1) + 서버점포코드(10) + 메뉴코드
                m_cTrnStatus.Sale.SubMenuPopUpYn = sMenuCode.Substring(0, 1);
                m_cTrnStatus.Sale.SubStoreCode = sMenuCode.Substring(1, 10).Trim();

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) DisplayInit(true, false);

                // 수량합산 모드이면 수량 합산 처리(0:미합산, 1:최종상품합산, 2:전체상품합산)
                if (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2" && sInPutValue == "")      
                {
                    if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                    {
                        ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                        for (int i = 0; i < alTrPluItem.Count; i++)
                        {
                            Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alTrPluItem[i];

                            if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;
                            if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL) continue;
                            if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) continue;
                            if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES) continue;

                            if (cPluItem.SUB_SHOP_CD != sMenuCode.Substring(1, 10).Trim() || cPluItem.ITEM_PLU_CD != sMenuCode.Substring(11)) continue;

                            if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SUM_DC_AMT > 0) continue;
                            if (cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0) continue;
                            if (cPluItem.SALE_QTY >= 99999) continue;
                            //#20170825 오픈 상품은 무조건 새 row로 입력 start
                            if (cPluItem.OPEN_ITEM_DIV == "1") continue;
                            //#20170825 오픈 상품은 무조건 새 row로 입력 end

                            // 수량 증가 처리
                            m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", i.ToString(), "");

                            SaleItemGrid.SelectIndexItem(i);
                            m_cCustDisp.DisplaySaleItemList(true, true, i);
                            txtInPut.Text = "";

                            //// 부가메뉴 등록
                            //if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                            //    && m_cTrnStatus.Sale.SubMenuPopUpYn == "1")
                            //{
                            //    // 부가메뉴 화면 표시
                            //    if (LoadSubMenuDisplay(cPluItem.SUB_SHOP_CD, cPluItem.M_CLSS) == true)
                            //    {
                            //        //20160911 SBSEO 추가 부가 메뉴일때도 부모코드 입력!
                            //        m_cTrnStatus.Sale.SubMenuMainCode = cPluItem.ITEM_PLU_CD;
                            //    }
                            //}

                            //// 플레이버 등록
                            //if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                            //    && cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR_OWN)
                            //{
                            //    if (cPluItem.FLAVOUR_QTY <= 2)
                            //    {
                            //        // 플레이버 화면 표시
                            //        LoadFlavourMaster(m_cTrnStatus.Sale.SubStoreCode);
                            //    }
                            //}
                            return;
                        }
                    }
                }

                // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                bool bRet = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, sInPutValue, "", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMenuCode.Substring(1));
                if (bRet == true)
                {
                    string sSUB_SHOP_CD = "", sM_CLSS = "";
                    if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                        && (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT
                            || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT))
                    {
                        if (SaleItemGrid.SelectedIndex >= 0)
                        {
                            ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);          // 상품 아이템 
                            Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[SaleItemGrid.SelectedIndex]; // 상품 정보
                            if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL)
                            {
                                sSUB_SHOP_CD = cPluItem.SUB_SHOP_CD;
                                sM_CLSS = cPluItem.M_CLSS;
                            }
                        }
                    }
                    LoadCommonSubMenuDisplay(sSUB_SHOP_CD, sM_CLSS);
                }
                
                txtInPut.Text = "";
                TxtInPutFocus();
            }
            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 SetMenuRowColCnt(int nKeyLayout, ref int nRow, ref int nCol)
        {
            try
            {
                // 메뉴버튼갯수 설정
                switch (nKeyLayout)
                {
                    case 1:
                        nRow = 5; nCol = 5;
                        break;
                    case 2:
                        nRow = 5; nCol = 4;
                        break;
                    case 3:
                        nRow = 5; nCol = 3;
                        break;
                    case 4:
                        nRow = 4; nCol = 5;
                        break;
                    case 5:
                        nRow = 4; nCol = 4;
                        break;
                    case 6:
                        nRow = 4; nCol = 3;
                        break;
                    case 7:
                        nRow = 3; nCol = 5;
                        break;
                    case 8:
                        nRow = 3; nCol = 4;
                        break;
                    case 9:
                        nRow = 3; nCol = 3;
                        break;
                    case 10:
                        nRow = 2; nCol = 5;
                        break;
                    case 11:
                        nRow = 2; nCol = 4;
                        break;
                    case 12:
                        nRow = 2; nCol = 3;
                        break;
                    case 13:
                        nRow = 1; nCol = 5;
                        break;
                    case 14:
                        nRow = 1; nCol = 4;
                        break;
                    case 15:
                        nRow = 1; nCol = 3;
                        break;

                    default:
                        nRow = 5; nCol = 5;
                        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);
            }
        }
        #endregion

        #region 부가메뉴 초기화 및 부가메뉴 마스터 로딩
        /// <summary>
        /// 공통 부가메뉴 초기화 및 부가메뉴 마스터 로딩
        /// </summary>
        /// <returns></returns>
        public bool LoadCommonSubMenuDisplay(string sSubStoreCode, string sItemCode)
        {
            try
            {
                // 3안 =>  부가메뉴 항시 표시 일때 사용
                if (m_cPosStatus.Base.DesignType != "3") return true;

                DataTable dtSubGrpKey = null;
                if (sSubStoreCode != "")
                {
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    // 부가메뉴 그룹 로딩
                    dtSubGrpKey = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU.TABLE_NAME, sSubStoreCode, sItemCode);
                    if (dtSubGrpKey == null || dtSubGrpKey.Rows.Count <= 0)
                    {
                        dtSubGrpKey = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU.TABLE_NAME, sSubStoreCode, PosConst.SUB_MEMO_L_CLSS_COMMON);
                    }
                }

                btnSubMenuCommGrp.SetFuncButtonCount(6, 1);                 // 버튼갯수 설정
                btnSubMenuCommGrp.VisibleUpDown = true;
                btnSubMenuCommGrp.ClearFuncButtonInfo();                    // 설정된 정보 초기화
                btnSubMenuCommGrp.BackColorUpDown = Color.FromArgb(204, 210, 217);
                btnSubMenuCommGrp.FontSizeUpDown = 12;
                btnSubMenuCommGrp.SelectedBackColor = Color.FromArgb(95, 104, 116);
                btnSubMenuCommGrp.SelectedForeColor = Color.FromArgb(255, 255, 255);

                if (dtSubGrpKey != null && dtSubGrpKey.Rows.Count > 0)
                {
                    foreach (DataRow dr in dtSubGrpKey.Rows)
                    {
                        Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                        int nSeq = CmUtil.GetDataRowInt(dr, PosMst.MST_SUBPRC_MENU.DATA.SEQ_NO);
                        nSeq += (int)((nSeq - 1)/ 5);

                        cFuncInfo.sGroupCode = "00";                // 분류코드
                        cFuncInfo.nSeqNo = nSeq;                    // 표시순번
                        cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU.DATA.SEL_TYPE), 1) + CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU.DATA.SUBPRC_MENU_GRP_CD);             // 기능코드
                        cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU.DATA.SUBPRC_MENU_GRP_NM);             // 기능 명

                        cFuncInfo.cBackColor = Color.FromArgb(214, 219, 255); // 백 컬러
                        cFuncInfo.cForeColor = Color.Black;         // 명 컬러
                        cFuncInfo.fFontSize = 12;                   // 명 폰트 사이즈
                        cFuncInfo.nButtonSize = 0;                  // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        btnSubMenuCommGrp.AddFuncButtonInfo(cFuncInfo);
                    }
                }

                DataTable dtSubDtl = null;
                if (sSubStoreCode != "")
                {
                    // 부가메뉴 그룹 상세 로딩
                    dtSubDtl = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU_GRP.TABLE_NAME, sSubStoreCode, sItemCode);
                    if (dtSubDtl == null || dtSubDtl.Rows.Count <= 0)
                    {
                        dtSubDtl = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU_GRP.TABLE_NAME, sSubStoreCode, PosConst.SUB_MEMO_L_CLSS_COMMON);
                    }
                }

                btnSubMenuCommDtl.SetFuncButtonCount(6, 1);                 // 버튼갯수 설정
                btnSubMenuCommDtl.VisibleUpDown = true;
                btnSubMenuCommDtl.ClearFuncButtonInfo();                    // 설정된 정보 초기화
                btnSubMenuCommDtl.BackColorUpDown = Color.FromArgb(224, 230, 235);  // 백 컬러
                btnSubMenuCommDtl.FontSizeUpDown = 12;

                if (dtSubDtl != null && dtSubDtl.Rows.Count > 0)
                {
                    foreach (DataRow dr in dtSubDtl.Rows)
                    {
                        Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                        int nSeq = CmUtil.GetDataRowInt(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SEQ_NO);                            // 표시순번
                        nSeq += (int)((nSeq - 1) / 5);

                        cFuncInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_GRP_CD);            // 분류코드
                        cFuncInfo.nSeqNo = nSeq;    // CmUtil.GetDataRowInt(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SEQ_NO);                            // 표시순번

                        // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV) == "1")
                        {
                            // 메뉴 키 값 = 부가메뉴구분(1)+서브점포코드(10) + 메뉴코드(20) + 메뉴명(40) + 메뉴가격(20)
                            cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV), 1)
                                    + CmUtil.RPadH(sSubStoreCode, 10) + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_CD), 20)
                                    + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.LABEL_NM), 40)
                                    + CmUtil.RPadH("0", 20);

                            cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.LABEL_NM);
                        }
                        else if (CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV) == "2")
                        {
                            double nMenuPrc = CmUtil.GetDataRowDouble(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.UP_CHARGE_AMT);
                            //if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0")
                            //    nMenuPrc = CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT);     // 메뉴 가격
                            //else
                            //    nMenuPrc = CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT);      // 메뉴 가격

                            // 메뉴 키 값 = 부가메뉴구분(1)+서브점포코드(10) + 메뉴코드(20) + 메뉴명(40) + 메뉴가격(20)
                            cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV), 1)
                                    + CmUtil.RPadH(sSubStoreCode, 10) + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_VAL), 20)
                                    + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM), 40)
                                    + CmUtil.RPadH(nMenuPrc.ToString(), 20);

                            cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n"
                                    + m_cPosStatus.Global.NumericTOCurrency(nMenuPrc);
                            //cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n"
                            //        + m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol
                            //        + m_cPosStatus.Global.NumericTOCurrency(nMenuPrc);
                        }
                        else
                        {
                            cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV), 1)
                                    + CmUtil.RPadH(sSubStoreCode, 10) + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_VAL), 20)
                                    + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM), 40)
                                    + CmUtil.RPadH("0", 20);

                            cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n" + "0";
                            //cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n" + m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + "0";
                        }

                        cFuncInfo.cBackColor = Color.FromArgb(224, 230, 235);   // 백 컬러
                        cFuncInfo.cForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.FONT_COLOR));       // 명 컬러
                        cFuncInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.FONT_SIZE);                                // 명 폰트 사이즈
                        cFuncInfo.nButtonSize = 0;                              // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                        btnSubMenuCommDtl.AddFuncButtonInfo(cFuncInfo);
                    }
                }
                // 메뉴 표시
                string sGrpCode = btnSubMenuCommGrp.DisplayFuncButton("00");            // 분류 버튼 표시
                btnSubMenuCommGrp_FuncClickHandler(btnSubMenuCommGrp, sGrpCode);        // 첫번째 분류 선택 처리(버튼 그리기)

                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;
            }
        }

        private void btnSubMenuCommGrp_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {
                if (sFuncCode == "")
                {
                    btnSubMenuCommGrp.SelectFuncButton(sFuncCode);      // 분류 선택 효과
                    btnSubMenuCommDtl.DisplayFuncButton("");            // 메뉴 표시
                }
                else
                {
                    btnSubMenuCommGrp.SelectFuncButton(sFuncCode);      // 분류 선택 효과

                    m_sSubMenuGrpSelType = sFuncCode.Substring(0, 1);
                    // 메뉴 표시
                    btnSubMenuCommDtl.DisplayFuncButton(sFuncCode.Substring(1));
                }
            }
            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="sSubStoreCode"></param>
        /// <param name="sItemCode">중분류코드</param>
        /// <returns></returns>
        public bool LoadSubMenuDisplay(string sSubStoreCode, string sItemCode)
        {
            try
            {
                // 3안 =>  부가메뉴 항시 표시 일때 사용
                if (m_cPosStatus.Base.DesignType == "3")
                {
                    LoadCommonSubMenuDisplay(sSubStoreCode, sItemCode);
                    return false;
                }

                pnlSetMenu.Visible = false;
                pnlFlavour.Visible = false;

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 부가메뉴 그룹 로딩
                DataTable dtSubGrpKey = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU.TABLE_NAME, sSubStoreCode, sItemCode);
                if (dtSubGrpKey == null || dtSubGrpKey.Rows.Count <= 0)
                {
                    dtSubGrpKey = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU.TABLE_NAME, sSubStoreCode, PosConst.SUB_MEMO_L_CLSS_COMMON);
                    if (dtSubGrpKey == null || dtSubGrpKey.Rows.Count <= 0)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0018); // 부가메뉴 그룹 마스터가 없습니다
                        return false;
                    }
                }

                btnSubMenuGrp.SetFuncButtonCount(6, 1);                 // 버튼갯수 설정
                btnSubMenuGrp.VisibleUpDown = true;
                btnSubMenuGrp.ClearFuncButtonInfo();                    // 설정된 정보 초기화
                btnSubMenuGrp.BackColorUpDown = Color.FromArgb(204, 210, 217);
                //btnSubMenuGrp.BackColor = Color.FromArgb(224, 230, 235);


                btnSubMenuGrp.SelectedBackColor = Color.FromArgb(95, 104, 116);
                btnSubMenuGrp.SelectedForeColor = Color.FromArgb(255, 255, 255);


                foreach (DataRow dr in dtSubGrpKey.Rows)
                {
                    Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                    int nSeq = CmUtil.GetDataRowInt(dr, PosMst.MST_SUBPRC_MENU.DATA.SEQ_NO);
                    nSeq += (int)((nSeq - 1) / 5);
                    
                    cFuncInfo.sGroupCode = "00";                // 분류코드
                    cFuncInfo.nSeqNo = nSeq;                    // 표시순번
                    cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU.DATA.SEL_TYPE), 1) + CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU.DATA.SUBPRC_MENU_GRP_CD);             // 기능코드
                    cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU.DATA.SUBPRC_MENU_GRP_NM);             // 기능 명

                    cFuncInfo.cBackColor = Color.FromArgb(214, 219, 255); // 백 컬러
                    cFuncInfo.cForeColor = Color.Black;         // 명 컬러
                    cFuncInfo.fFontSize = 12;                   // 명 폰트 사이즈
                    cFuncInfo.nButtonSize = 0;                  // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                    btnSubMenuGrp.AddFuncButtonInfo(cFuncInfo);
                }

                // 부가메뉴 그룹 상세 로딩
                DataTable dtSubDtl = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU_GRP.TABLE_NAME, sSubStoreCode, sItemCode);
                if (dtSubDtl == null || dtSubDtl.Rows.Count <= 0)
                {
                    dtSubDtl = m_cPluService.SearchMenuMaster(PosMst.MST_SUBPRC_MENU_GRP.TABLE_NAME, sSubStoreCode, PosConst.SUB_MEMO_L_CLSS_COMMON);
                    if (dtSubDtl == null || dtSubDtl.Rows.Count <= 0)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0019); // 부가메뉴 그룹 상세 마스터가 없습니다
                        return false;
                    }
                }
                btnSubMenuDtl.SetFuncButtonCount(6, 4);                 // 버튼갯수 설정
                btnSubMenuDtl.VisibleUpDown = true;
                btnSubMenuDtl.ClearFuncButtonInfo();                    // 설정된 정보 초기화
                btnSubMenuDtl.BackColorUpDown = Color.FromArgb(224, 230, 235);  // 백 컬러
                //btnSubMenuDtl.BackColor = Color.FromArgb(224, 230, 235);

                foreach (DataRow dr in dtSubDtl.Rows)
                {
                    Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                    int nSeq = CmUtil.GetDataRowInt(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SEQ_NO);                            // 표시순번
                    nSeq += (int)((nSeq - 1) / 23);

                    cFuncInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_GRP_CD);            // 분류코드
                    cFuncInfo.nSeqNo = nSeq;    // CmUtil.GetDataRowInt(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SEQ_NO);                            // 표시순번

                    // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
                    if (CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV) == "1")
                    {
                        // 메뉴 키 값 = 부가메뉴구분(1)+서브점포코드(10) + 메뉴코드(20) + 메뉴명(40) + 메뉴가격(20)
                        cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV), 1)
                                + CmUtil.RPadH(sSubStoreCode, 10) + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_CD), 20)
                                + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.LABEL_NM), 40)
                                + CmUtil.RPadH("0", 20);

                        cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.LABEL_NM);
                    }
                    else if (CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV) == "2")
                    {
                        double nMenuPrc = CmUtil.GetDataRowDouble(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.UP_CHARGE_AMT);
                        //if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0")
                        //    nMenuPrc = CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT);     // 메뉴 가격
                        //else
                        //    nMenuPrc = CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT);      // 메뉴 가격

                        // 메뉴 키 값 = 부가메뉴구분(1)+서브점포코드(10) + 메뉴코드(20) + 메뉴명(40) + 메뉴가격(20)
                        cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV), 1)
                                + CmUtil.RPadH(sSubStoreCode, 10) + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_VAL), 20)
                                + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM), 40)
                                + CmUtil.RPadH(nMenuPrc.ToString(), 20);

                        cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n"
                                + m_cPosStatus.Global.NumericTOCurrency(nMenuPrc);
                        //cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n"
                        //        + m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol
                        //        + m_cPosStatus.Global.NumericTOCurrency(nMenuPrc);
                    }
                    else
                    {
                        cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_DIV), 1)
                                + CmUtil.RPadH(sSubStoreCode, 10) + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.SUBPRC_MENU_KEY_VAL), 20)
                                + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM), 40)
                                + CmUtil.RPadH("0", 20);

                        cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n" + "0";
                        //cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n" + m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + "0";
                    }

                    cFuncInfo.cBackColor = Color.FromArgb(224, 230, 235);   // 백 컬러
                    cFuncInfo.cForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.FONT_COLOR));       // 명 컬러
                    cFuncInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_SUBPRC_MENU_GRP.DATA.FONT_SIZE);                                // 명 폰트 사이즈
                    cFuncInfo.nButtonSize = 0;                              // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                    btnSubMenuDtl.AddFuncButtonInfo(cFuncInfo);
                }
                string sGrpCode = btnSubMenuGrp.DisplayFuncButton("00");            // 분류 버튼 표시
                btnSubMenuGrp_FuncClickHandler(btnSubMenuGrp, sGrpCode);            // 첫번째 분류 선택 처리(버튼 그리기)

                pnlSubMenu.Visible = 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;
            }
        }
        /// <summary>
        /// 부가메뉴 그룹 선택 이벤트 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void btnSubMenuGrp_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {
                btnSubMenuGrp.SelectFuncButton(sFuncCode);      // 분류 선택 효과

                if (sFuncCode == "")
                {
                    btnSubMenuDtl.DisplayFuncButton("");
                    return;
                }

                m_sSubMenuGrpSelType = sFuncCode.Substring(0, 1);
                // 메뉴 표시
                btnSubMenuDtl.DisplayFuncButton(sFuncCode.Substring(1));
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }
        /// <summary>
        /// 부가메뉴 선택 이벤트 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void btnSubMenuDtl_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) return;
                if (sFuncCode == "") return;

                // 메뉴 키 값 = 부가메뉴구분(1) + 서브점포코드(10) + 메뉴코드(20) + 메뉴명(40) + 메뉴가격(20)
                string sMENU_KEY_DIV = CmUtil.MidH(sFuncCode, 0, 1).Trim();                // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
                string sMENU_KEY_CD = CmUtil.MidH(sFuncCode, 1, 30).Trim();                // 서버점포코드(10) + 메뉴코드(20)
                string sMENU_KEY_NM = CmUtil.MidH(sFuncCode, 31, 40).Trim();               // 부가메뉴명
                string sMENU_PRICE = CmUtil.MidH(sFuncCode, 71, 20).Trim();                // 부가메뉴단가

                // 그리드의 현재 선택 행번호
                int nSelectRow = SaleItemGrid.SelectedIndex;
                string sSelectRow = "";
                if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
                {
                    Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
                    GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow];
                    // No
                    CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                    sSelectRow = cGridExRowData.GridItemValue;
                }

                m_cTrnStatus.Sale.SubMenuKeyDiv = sMENU_KEY_DIV;

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                {
                    // 상품 아이템 
                    ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                    Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelectRow)]; // 상품 정보

                    if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017);      // 취소한 상품 입니다
                        return;
                    }

                    if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027);      // 주문완료 후 변경 할 수 없습니다
                        return;
                    }

                    if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL
                        && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.OPT_MENU)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0026);      // 부가메뉴를 등록 할 수 없는 상품입니다
                        return;
                    }

                    sMENU_KEY_CD = CmUtil.RPadH(cPluItem.SUB_SHOP_CD, 10) + CmUtil.MidH(sFuncCode, 11, 20).Trim();

                    m_cTrnStatus.Sale.SubMenuSelectPos = CmUtil.IntParse(sSelectRow);
                    m_cTrnStatus.Sale.SubMenuMainCode = cPluItem.ITEM_PLU_CD;
                    m_cTrnStatus.Sale.SubMenuUpSalePrc = m_cDataService.DoubleParse(sMENU_PRICE);

                    if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)
                    {
                        // 수량합산 모드이면 수량 합산 처리(0:미합산, 1:최종상품합산, 2:전체상품합산)
                        bool bSubMenuQtyAdd = false;
                        if (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2" && txtInPut.Text == "")
                        {
                            for (int i = CmUtil.IntParse(sSelectRow) + 1; i < alPluItem.Count; i++)
                            {
                                Column.TR_PLU.DATA cSubPluItem = (Column.TR_PLU.DATA)alPluItem[i];

                                if (cSubPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.OPT_MENU) break;
                                
                                if (cSubPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSubPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;
                                if (cSubPluItem.SUBPRC_MENU_KEY_DIV != sMENU_KEY_DIV) continue; 
                                if (cSubPluItem.SUB_SHOP_CD != sMENU_KEY_CD.Substring(0, 10).Trim() || cSubPluItem.ITEM_PLU_CD != sMENU_KEY_CD.Substring(10)) continue;

                                if (cSubPluItem.ITEM_DC_AMT > 0 || cSubPluItem.SUM_DC_AMT > 0 || cSubPluItem.SET_DC_AMT > 0 || cSubPluItem.EXCEP_DC_AMT > 0) continue;
                                if (cSubPluItem.SALE_QTY >= 99999) continue;

                                // 수량 증가 처리
                                m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", i.ToString(), "");
                                SaleItemGrid.SelectIndexItem(i);
                                bSubMenuQtyAdd = true;
                            }
                        }

                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////
                        // 부가메뉴 추가 등록
                        if (bSubMenuQtyAdd == false)
                        {
                            if (sMENU_KEY_DIV == "1")                // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
                            {
                                m_cPluService.SetSubMenuMemoItem(sMENU_KEY_CD, sMENU_KEY_NM, txtInPut.Text);
                            }
                            else
                            {
                                // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                                m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, sSelectRow, PosConst.SALE_PLU_INPUT_TYPE.SUBMENU + sMENU_KEY_CD);
                            }
                        }
                    }
                    else
                    {
                        // 부가메뉴 변경 등록
                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////
                        if (sMENU_KEY_DIV == "1")                // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
                        {
                            m_cPluService.SetSubMenuMemoItemChange(sSelectRow, sMENU_KEY_CD, sMENU_KEY_NM);
                        }
                        else
                        {
                            m_cPluService.SetSubMenuItemChange(sSelectRow, sMENU_KEY_CD, sMENU_KEY_DIV);
                        }
                    }
                    DisplayItem(1, false);      // 0:LastItem, 1:OldFocus
                    SaleItemGrid.SelectIndexItem(CmUtil.IntParse(sSelectRow));
                }
                else
                {
                    m_cTrnStatus.Sale.SubMenuUpSalePrc = m_cDataService.DoubleParse(sMENU_PRICE);

                    if (sMENU_KEY_DIV == "1")                // (0:부가상품, 1:부가메모)
                    {
                        m_cPluService.SetSubMenuMemoItem(sMENU_KEY_CD, sMENU_KEY_NM, txtInPut.Text);
                        DisplayItem(0, false);
                    }
                    else
                    {
                        // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                        m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, "", PosConst.SALE_PLU_INPUT_TYPE.SUBMENU + sMENU_KEY_CD);
                    }
                    //pnlSubMenu.Visible = false;
                }

                if (PosMstManager.GetPosOption(POS_OPTION.OPT032) == "1" || m_sSubMenuGrpSelType == "1") btnSubMenuExit_Click(null, null);

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

        /// <summary>
        /// 부가메뉴 등록 완료
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSubMenuExit_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
                {
                    m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET;

                    m_cSaleMainProc.RegisterPluItem("", "", "");
                    if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING_SET_OPT) pnlSubMenu.Visible = false;
                }
                else
                {
                    m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;

                    m_cTrnStatus.Sale.SubMenuPopUpYn = "0";

                    pnlSubMenu.Visible = false;
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }
        ///// <summary>
        ///// 부가메뉴 선택 이벤트 처리
        ///// </summary>
        ///// <param name="sender"></param>
        ///// <param name="sFuncCode"></param>
        //private void btnSubMenuDtl_FuncClickHandler(object sender, string sFuncCode)
        //{
        //    try
        //    {
        //        if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) return;
        //        if (sFuncCode == "") return;

        //        // 메뉴 키 값 = 부가메뉴구분(1)+서브점포코드(10) + 메뉴코드(20) + 메뉴명(40)
        //        string sMENU_KEY_DIV = sFuncCode.Substring(0, 1).Trim();                // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
        //        m_cTrnStatus.Sale.SubStoreCode = sFuncCode.Substring(1, 10).Trim();     // 서브점포코드
        //        string sMENU_KEY_CD = sFuncCode.Substring(1, 30).Trim();                // 서버점포코드(10) + 메뉴코드(20)
        //        string sMENU_KEY_NM = sFuncCode.Substring(31).Trim();                   // 서브메모명

        //        // 그리드의 현재 선택 행번호
        //        int nSelectRow = SaleItemGrid.SelectedIndex;
        //        string sSelectRow = "";
        //        if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
        //        {
        //            Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
        //            GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow];
        //            // No
        //            CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
        //            sSelectRow = cGridExRowData.GridItemValue;
        //        }

        //        if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_BTN_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
        //        {
        //            // 상품 아이템 
        //            ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
        //            for (int i = CmUtil.IntParse(sSelectRow); i >= 0; i--)
        //            {
        //                // 상품 정보
        //                Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[i];

        //                if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
        //                {
        //                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0026);      // 부가메뉴를 등록 할 수 없는 상품입니다
        //                    return;
        //                }

        //                if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL) continue;

        //                if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
        //                {
        //                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017);      // 취소한 상품 입니다
        //                    return;
        //                }

        //                if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
        //                {
        //                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027);      // 주문완료 후 변경 할 수 없습니다
        //                    return;
        //                }

        //                string sOldSaleFlow = m_cPosStatus.Sale.SaleFlow;
        //                m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_BTN_OPT;

        //                m_cTrnStatus.Sale.SubMenuSelectPos = i;
        //                if (sMENU_KEY_DIV == "1")                // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
        //                {
        //                    m_cPluService.SetSubMemo(sMENU_KEY_CD, sMENU_KEY_NM, txtInPut.Text);
        //                    DisplayItem(1, false);
        //                }
        //                else
        //                {
        //                    // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
        //                    m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, i.ToString(), PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMENU_KEY_CD);

        //                    SaleItemGrid.SelectIndexItem((int)m_cTrnStatus.Sale.SubMenuSelectPos + 1);
        //                }
        //                m_cPosStatus.Sale.SaleFlow = sOldSaleFlow;
        //                break;
        //            }
        //        }
        //        else
        //        {
        //            if (sMENU_KEY_DIV == "1")                // (0:부가상품, 1:부가메모)
        //            {
        //                m_cPluService.SetSubMemo(sMENU_KEY_CD, sMENU_KEY_NM, txtInPut.Text);
        //                DisplayItem(0, false);
        //            }
        //            else
        //            {
        //                // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
        //                m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, "", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMENU_KEY_CD);
        //            }
        //            //pnlSubMenu.Visible = false;
        //        }

        //        if (PosMstManager.GetPosOption(POS_OPTION.OPT032) == "1") btnSubMenuExit_Click(null, null);
        //        txtInPut.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);
        //    }
        //}

        ///// <summary>
        ///// 부가메뉴 등록 완료
        ///// </summary>
        ///// <param name="sender"></param>
        ///// <param name="e"></param>
        //private void btnSubMenuExit_Click(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
        //        {
        //            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET;

        //            m_cSaleMainProc.RegisterPluItem("", "", "");
        //            if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING_SET_OPT) pnlSubMenu.Visible = false;
        //        }
        //        else
        //        {
        //            m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;

        //            m_cTrnStatus.Sale.SubMenuPopUpYn = "0";

        //            pnlSubMenu.Visible = 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);
        //    }
        //}

        #endregion

        #region 세트메뉴 상품 화면 표시
        /// <summary>
        /// 세트메뉴 상품 화면 표시
        /// </summary>
        /// <param name="sGroupCode"></param>
        /// <param name="sGroupName"></param>
        /// <returns></returns>
        public bool LoadSetMenuDisplay(string sGroupCode, string sGroupName)
        {
            return LoadSetMenuDisplay(sGroupCode, sGroupName, false);
        }
        /// <summary>
        /// 세트메뉴 상품 화면 표시
        /// </summary>
        /// <param name="sGroupCode"></param>
        /// <param name="sGroupName"></param>
        /// <param name="bSellGift"></param>
        /// <returns></returns>
        public bool LoadSetMenuDisplay(string sGroupCode, string sGroupName, bool bSellGift)
        {
            bool bMenuExist = false;
            try
            {
                pnlSubMenu.Visible = false;
                pnlFlavour.Visible = false;

                // 세트 그룹 상세 로딩
                btnSetMenu.SetFuncButtonCount(6, 4);                 // 버튼갯수 설정
                btnSetMenu.VisibleUpDown = true;
                btnSetMenu.ClearFuncButtonInfo();                    // 설정된 정보 초기화

                // 선불카드 판매 - 중국 (별도 입력 처리)
                if (PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1")
                {
                    btnSetMenu.DisplayFuncButton(sGroupCode);            // 메뉴 버튼 표시

                    pnlSetMenu.Visible = true;
                    return true;
                }
                else
                {
                    if (this.m_cSaleMainProc.m_dtSetMenuDetail == null) return false;
                }

                if (bSellGift == true)
                {
                    int nSeq = 1;
                    foreach (DataRow dr in this.m_cSaleMainProc.m_dtSetMenuDetail.Rows)
                    {
                        lblSetMenuTitle.Text = sGroupName;

                        Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                        cFuncInfo.sGroupCode = sGroupCode;                  // 분류코드
                        cFuncInfo.nSeqNo = nSeq;                            // 표시순번
                        cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SUB_STOR_CD), 10)
                                            + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_CD);           // 코드
                        cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM);     // 명    
                        cFuncInfo.fFontSize = 10;

                        cFuncInfo.nButtonSize = 0;                  // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)
                        btnSetMenu.AddFuncButtonInfo(cFuncInfo);

                        nSeq++;
                    }
                }
                else
                {
                    foreach (DataRow dr in this.m_cSaleMainProc.m_dtSetMenuDetail.Rows)
                    {
                        lblSetMenuTitle.Text = sGroupName;
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET_GRP.DATA.SET_ITEM_GRP_CD) == sGroupCode)
                        {
                            Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                            cFuncInfo.sGroupCode = sGroupCode;          // 분류코드
                            cFuncInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_ITEM_SET_GRP.DATA.SEQ_NO);                            // 표시순번
                            cFuncInfo.sFuncCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET_GRP.DATA.SUB_STOR_CD), 10)
                                                + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET_GRP.DATA.SET_ITEM_CD), 20)
                                                + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET_GRP.DATA.SET_ITEM_UP_PRC);                // 코드+업차지금액
                            cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n"
                                                + m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM_SET_GRP.DATA.SET_ITEM_UP_PRC));
                            //cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM) + "\n"
                            //                    + m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol
                            //                    + m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, PosMst.MST_ITEM_SET_GRP.DATA.SET_ITEM_UP_PRC));
                            cFuncInfo.cBackColor = Color.LightGray;     // 백 컬러
                            cFuncInfo.cForeColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET_GRP.DATA.FONT_COLOR));  // 명 컬러
                            cFuncInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_ITEM_SET_GRP.DATA.FONT_SIZE);                           // 명 폰트 사이즈
                            cFuncInfo.nButtonSize = 0;                  // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                            btnSetMenu.AddFuncButtonInfo(cFuncInfo);

                            bMenuExist = true;
                        }
                    }
                    if (bMenuExist == false) return false;
                }
                btnSetMenu.DisplayFuncButton(sGroupCode);            // 메뉴 버튼 표시

                pnlSetMenu.Visible = 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;
            }
        }

        public int GetSelectedIndexOnSaleItemGrid()
        {
            return SaleItemGrid.SelectedIndex;
        }

        /// <summary>
        /// 세트메뉴 선택 이벤트 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void btnSetMenu_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {
                if (sFuncCode == "") return;

                // 메뉴 키 값 = 서버점포코드(10) + 메뉴코드
                m_cTrnStatus.Sale.SubStoreCode = sFuncCode.Substring(0, 10).Trim();

                // 그리드의 현재 선택 행번호
                int nSelectRow = SaleItemGrid.SelectedIndex;
                string sSelectRow = "";
                if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
                {
                    Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
                    GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow];
                    // No
                    CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                    sSelectRow = cGridExRowData.GridItemValue;
                }

                if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID)
                {
                    //상품권, 선불 카드 판매면... 
                    // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                    m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, sSelectRow, PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sFuncCode);
                }
                else
                {
                    pnlSetMenu.Visible = false;

                    string sMenuCode = sFuncCode.Substring(0, 30).Trim();
                    m_cTrnStatus.Sale.SetPluUpSalePrc = m_cDataService.DoubleParse(sFuncCode.Substring(30).Trim());

                    if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                    {
                        // 상품 아이템 
                        ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                        // 상품 정보
                        Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelectRow)];

                        m_cPluService.SetSetMenuItemChange(sSelectRow, sMenuCode.Substring(10), "", m_cTrnStatus.Sale.SetPluUpSalePrc.ToString());

                        DisplayItem(1, false);  // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
                    }
                    else
                    {
                        // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                        m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, sSelectRow, PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMenuCode);
                    }
                }
                txtInPut.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);
            }
        }
        #endregion

        #region 플레이버 초기화 및 플레이버 마스터 로딩
        /// <summary>
        /// 플레이버 초기화 및 플레이버 마스터 로딩
        /// </summary>
        /// <returns></returns>
        public bool LoadFlavourMaster(string sSubStoreCode)
        {
            bool bMenuExist = false;
            int nMaxSeqNo = 0;
            try
            {
                if (PosMstManager.GetPosOption(POS_OPTION.OPT028) == "0") return false;

                if (sSubStoreCode == "")
                {
                    // 플레이버 화면 숨기기
                    pnlFlavour.Visible = false;
                    return true;
                }

                // 플레이버 로딩
                DataTable dtMemu = m_cPluService.SearchMenuMaster(PosMst.MST_FLAVOUR.TABLE_NAME, sSubStoreCode, "");
                if (dtMemu == null || dtMemu.Rows.Count <= 0)
                {
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0029); // 플레이버 마스터가 없습니다
                    return false;
                }

                btnFlavourMenu.Location = new Point(1, 3);
                btnFlavourMenu.Size = new Size(pnlFlavour.Width - 2, pnlFlavour.Height - 4);
                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    btnFlavourMenu.SetMenuButtonCount(6, 6);                  // 메뉴버튼갯수 설정
                }
                else
                {
                    btnFlavourMenu.SetMenuButtonCount(4, 9);                  // 메뉴버튼갯수 설정
                }

                btnFlavourMenu.VisibleUpDown = true;
                btnFlavourMenu.BackColor = CmUtil.GetColorToString("223223223");
                btnFlavourMenu.BackColorUpDown = Color.White;
                btnFlavourMenu.ForeColorUpDown = Color.Black;
                btnFlavourMenu.ClearMenuButtonInfo();                     // 설정된 메뉴정보 초기화
                // 메뉴정보 설정
                foreach (DataRow dr in dtMemu.Rows)
                {
                    Cosmos.UI.CsmMenu.MenuBtnInfo cMenuInfo = new Cosmos.UI.CsmMenu.MenuBtnInfo();

                    cMenuInfo.sClassCode = "00";            // 대분류
                    cMenuInfo.sGroupCode = "0000";          // 중분류코드

                    int nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_FLAVOUR.DATA.ITEM_LOC);
                    nSeqNo = nSeqNo + (int)(nSeqNo / 35);
                    cMenuInfo.nSeqNo = nSeqNo;                      // 표시순번
                    // 메뉴 키 값 = 서브점포코드(10) + 메뉴코드
                    string sMenuCode = CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.SUB_STOR_CD), 10)
                                     + CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.ITEM_CD);
                    cMenuInfo.sMenuCode = sMenuCode;                                                                    // 메뉴 연결코드
                    cMenuInfo.sMenuName = CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.SHTCUT_ITEMNM);              // 메뉴 명
                    cMenuInfo.sMenuPrice = "";      // 메뉴 가격

                    cMenuInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.BTN_COLOR1));       // 버튼 백 컬러
                    cMenuInfo.cForeColorName = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.FONT_COLOR));   // 메뉴명 컬러
                    cMenuInfo.cForeColorPrice = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.FONT_COLOR));  // 메뉴가격 컬러
                    cMenuInfo.fFontSizeName = CmUtil.GetDataRowFloat(dr, PosMst.MST_FLAVOUR.DATA.FONT_SIZE);   // 메뉴명 폰트 사이즈
                    cMenuInfo.fFontSizePrice = CmUtil.GetDataRowFloat(dr, PosMst.MST_FLAVOUR.DATA.FONT_SIZE);  // 메뉴 가격 폰트 사이즈
                    cMenuInfo.nButtonSize = 0;        // 메뉴버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                    if (PosMstManager.GetPosOption(POS_OPTION.OPT107) == "0")
                        cMenuInfo.cMenuImage = "";
                    else
                    {
                        cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_FLAVOUR.DATA.ITEM_CD) + ".PNG";
                        //if (File.Exists(cMenuInfo.cMenuImage) == false)
                        //    cMenuInfo.cMenuImage = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG).Trim();

                        //cMenuInfo.cMenuImage = CmUtil.LoadImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG));
                    }

                    btnFlavourMenu.AddMenuButtonInfo(cMenuInfo);

                    bMenuExist = true;

                    if ( nMaxSeqNo < nSeqNo) nMaxSeqNo = nSeqNo;
                }
                if (bMenuExist == false) return false;

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 닫기 버튼 생성
                {
                    for (int i = 0; i < nMaxSeqNo; i += 35)
                    {
                        // 닫기 버튼 설정
                        Cosmos.UI.CsmMenu.MenuBtnInfo cMenuInfo = new Cosmos.UI.CsmMenu.MenuBtnInfo();

                        cMenuInfo.nSeqNo = i + 35;                  // 표시순번

                        cMenuInfo.sClassCode = "00";                // 대분류
                        cMenuInfo.sGroupCode = "0000";              // 중분류코드
                        cMenuInfo.sMenuCode = PosKey.MENU_KEY.ESC_PREVIOUS;                               // 메뉴 연결코드
                        cMenuInfo.sMenuName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0040); // 메뉴 명
                        cMenuInfo.sMenuPrice = "";                  // 메뉴 가격
                        cMenuInfo.cBackColor = Color.White;         // 버튼 백 컬러
                        cMenuInfo.cForeColorName = Color.Black;     // 메뉴명 컬러
                        cMenuInfo.cForeColorPrice = Color.Black;    // 메뉴가격 컬러
                        cMenuInfo.fFontSizeName = 12;               // 메뉴명 폰트 사이즈
                        cMenuInfo.fFontSizePrice = 12;              // 메뉴 가격 폰트 사이즈
                        cMenuInfo.nButtonSize = 0;                  // 메뉴버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)
                        cMenuInfo.cMenuImage = "";

                        btnFlavourMenu.AddMenuButtonInfo(cMenuInfo);
                    }
                }

                btnFlavourMenu.DisplayMenuButton("00", "0000");

                pnlFlavour.Visible = 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;
            }
        }

        /// <summary>
        /// 플레이버 선택
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sMenuCode"></param>
        private void btnFlavour_MenuClickHandler(object sender, string sMenuCode)
        {
            try
            {
                if (sMenuCode == "" || sMenuCode == PosKey.MENU_KEY.ESC_PREVIOUS)
                {
                    pnlFlavour.Visible = false;
                    return;
                }

                txtInPut.Text = "";

                // 그리드의 현재 선택 행번호
                int nSelectRow = SaleItemGrid.SelectedIndex;
                string sSelectRow = "";
                if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
                {
                    Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
                    GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow];
                    // No
                    CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                    sSelectRow = cGridExRowData.GridItemValue;
                }
                if (sSelectRow == "") return;

                // 상품 아이템 
                ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                for (int i = CmUtil.IntParse(sSelectRow); i >= 0; i--)
                {
                    // 상품 정보
                    Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[i];

                    if ((cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR)) continue;

                    if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0030); // 플레이버를 등록 할 수 없는 상품 입니다
                        return;
                    }
                    if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017);      // 취소한 상품 입니다
                        return;
                    }

                    if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027);      // 주문완료 후 변경 할 수 없습니다
                        return;
                    }

                    // 플레이버 등록 가능 상품만 등록
                    if ((cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR_OWN))
                    {
                        // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄, 3:플레이버)
                        m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, i.ToString(), PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR + sMenuCode);
                        SaleItemGrid.SelectIndexItem(i + 1);
                        SaleItemGrid.Refresh();

                        if (PosMstManager.GetPosOption(POS_OPTION.OPT028) == "2") pnlFlavour.Visible = false;
                    }
                    else
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0030); // 플레이버를 등록 할 수 없는 상품 입니다
                    }
                    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);
            }
        }
        #endregion

        #region 기능키 컨트롤 초기화 및 기능키 마스터 로딩
        /// <summary>
        /// 기능키 컨트롤 초기화 및 기능키 마스터 로딩
        /// </summary>
        /// <returns>성공/실패</returns>
        public bool LoadFuncMaster()
        {
            try
            {
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 판매기본 기능키 로딩
                DataTable dtFuncKey = m_cPluService.SearchMenuMaster(PosMst.MST_FUNC_KEY_GRP.TABLE_NAME);
                if (dtFuncKey == null || dtFuncKey.Rows.Count <= 0)
                {
                    // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0000); // 기능키 그룹 마스터가 없습니다
                    return false;
                }

                // 좌측 기능키 초기화
                btnFuncSale.SetFuncButtonCount(2, 4);                 // 버튼갯수 설정
                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    btnFuncSale.BackColor = CmUtil.GetColorToString("116116116");
                    btnFuncSale.BackColorUpDown = Color.FromArgb(109, 110, 113);
                    btnFuncSale.ForeColorUpDown = Color.White;
                }
                else
                {
                    btnFuncSale.BackColor = CmUtil.GetColorToString("202207213");
                    btnFuncSale.BackColorUpDown = CmUtil.GetColorToString("225230236");
                }
                if (m_cPosStatus.ScnMst.FuncScrollUseYn == "1")
                {
                    btnFuncSale.VisibleUpDown = true;
                    btnFuncSale.SetUpDownPosition(1, 4);
                }
                else
                {
                    btnFuncSale.VisibleUpDown = false;
                }
                btnFuncSale.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                // 우측 기능키 초기화
                btnFuncItem.SetFuncButtonCount(3, 4);                 // 버튼갯수 설정
                btnFuncItem.BackColor = CmUtil.GetColorToString("202207213");
                btnFuncItem.BackColorUpDown = CmUtil.GetColorToString("225230236");
                if (m_cPosStatus.ScnMst.FuncScrollUseYn == "1")
                {
                    btnFuncItem.VisibleUpDown = true;
                    btnFuncItem.SetUpDownPosition(1, 4);
                }
                else
                {
                    btnFuncItem.VisibleUpDown = false;
                }
                btnFuncItem.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                foreach (DataRow dr in dtFuncKey.Rows)
                {
                    if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
                    {
                        // 후불
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID) == PosKey.MENU_KEY.SALE_EXIT) continue;
                    }
                    else
                    {
                        // 선불
                        if (CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID) == PosKey.MENU_KEY.ORDER_PRINT
                            || CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID) == PosKey.MENU_KEY.ORDER_COMPLETED
                            || CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID) == PosKey.MENU_KEY.EDIT_CUST_CNT
                            || CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID) == PosKey.MENU_KEY.ORDER_EXIT) continue;
                    }

                    Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                    cFuncInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_GRP_ID);          // 분류코드
                    cFuncInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_FUNC_KEY_GRP.DATA.DISP_SEQ);                 // 표시순번
                    cFuncInfo.sFuncCode = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID);               // 기능코드
                    cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_NM).Replace("\n", PosConst.CRLF).Replace("\\n", PosConst.CRLF);               // 기능 명

                    string sColor = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_BTN_COLOR);

                    //2016-10-29 기능키 배경 색상이 없을 때 기본 값으로 하드 코딩 - 요청사항!
                    if (m_cPosStatus.Base.DesignType == "1")        // 1안
                    {
                        cFuncInfo.cBackColor = CmUtil.GetColorToString(sColor.Length == 9 ? sColor : "109110113");
                        cFuncInfo.cForeColor = Color.White;
                    }
                    else
                    {
                        cFuncInfo.cBackColor = CmUtil.GetColorToString(sColor.Length == 9 ? sColor : "225230236");
                        cFuncInfo.cForeColor = Color.Black;
                    }

                    //cFuncInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_BTN_COLOR));  // 백 컬러
                    //if (m_cPosStatus.Base.DesignType == "1")        // 1안
                    //    cFuncInfo.cForeColor = Color.White;                                                                 // 명 컬러
                    //else
                    //    cFuncInfo.cForeColor = Color.Black;                                                                 // 명 컬러

                    cFuncInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FONT_SIZE);           // 명 폰트 사이즈
                    cFuncInfo.nButtonSize = CmUtil.GetDataRowInt(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_BTN_SIZE);       // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                    btnFuncSale.AddFuncButtonInfo(cFuncInfo);
                    btnFuncItem.AddFuncButtonInfo(cFuncInfo);
                }
                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="bChgSaleDoing"></param>
        /// <param name="bChgSaleFlow"></param>
        public void DisplayInit(bool bChgSaleDoing, bool bChgSaleFlow)
        {
            try
            {
                //if(bChgSaleDoing == true && bChgSaleFlow == true)
                //{
                //    SubPriorReadingVarClear(true);
                //}

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                if (bChgSaleDoing == true)
                {
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    // 판매 개시
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    pnlMotSale.Visible = false;
                    pnlSubMenu.Visible = false;

                    // 받은금액, 거스름 초기화
                    m_cPosStatus.Sale.PayRecvedAmt = 0;
                    m_cPosStatus.Sale.ChangeCashAmt = 0;
                    // 받을금액 텍스트 초기화
                    //lblNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                    lblNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);

                    // 그리드 초기화
                    SaleItemGrid.RemoveAll();
                    // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
                    DisplayItem(0, false);
                    // 고객화면 상품정보 클리어
                    m_cCustDisp.ClearSaleItemList();        
                }

                if (bChgSaleFlow == true)
                {
                    if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                    {
                        pnlSetMenu.Visible = false;
                        if (m_cPosStatus.Base.DesignType == "1")        // 1안
                        {
                            btnFuncSale.DisplayFuncButton(PosKey.MENU_KEY.A_BEFORE_MENU);               // 기능 버튼 표시
                        }
                        else
                        {
                            btnFuncSale.DisplayFuncButton(PosKey.MENU_KEY.BC_BEFORE_MENU_L);            // 기능 버튼 표시
                            btnFuncItem.DisplayFuncButton(PosKey.MENU_KEY.BC_BEFORE_MENU_R);            // 기능 버튼 표시  
                        }
                        WinSale.SetTradType(lblSaleStatus, pnlTopBg, "", "");                        
                        // 공통부가메뉴 버튼초기화
                        LoadCommonSubMenuDisplay(m_cPosStatus.Base.StoreNo, PosConst.SUB_MEMO_L_CLSS_COMMON);
                    }
                    else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                    {
                        // 상품등록 중
                        if (m_cPosStatus.Base.DesignType == "1")        // 1안
                        {
                            btnFuncSale.DisplayFuncButton(PosKey.MENU_KEY.A_AFTER_MENU);                // 기능 버튼 표시
                        }
                        else
                        {
                            btnFuncSale.DisplayFuncButton(PosKey.MENU_KEY.BC_AFTER_MENU_L);             // 기능 버튼 표시
                            btnFuncItem.DisplayFuncButton(PosKey.MENU_KEY.BC_AFTER_MENU_R);             // 기능 버튼 표시
                        }
                        if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) WinSale.SetTradType(lblSaleStatus, pnlTopBg, "", ""); 
                    }
                }

                txtInPut.Text = "";

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

        /// <summary>
        /// 상품등록 정보 화면 표시
        /// </summary>
        /// <param name="nFocus">0:LastItem, 1:OldFocus</param>
        public void DisplayItem(int nFocus, bool bDispChange)
        {
            try
            {
                this.SuspendLayout();

                if (bDispChange == true)
                {
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    // 결제 완료
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    #region
                    //시작 MOT 사용 유무!
                    if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT026), "0") == "1")
                    {
                        pnlMotSale.Visible = true;
                    }
                    //lblNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212);
                    lblNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212);
                    if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
                    {
                        // 받은금액 표시
                        txtRecvedAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cPosStatus.Sale.PayRecvedAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                        // 순매출액 표시 자리에 거스름 표시
                        txtNetSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cPosStatus.Sale.ChangeCashAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    }
                    else
                    {
                        // 받은금액 표시
                        txtRecvedAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cPosStatus.Sale.PayRecvedAmt);
                        // 순매출액 표시 자리에 거스름 표시
                        txtNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cPosStatus.Sale.ChangeCashAmt);
                    }

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

                    // 그리드 초기화
                    //#20171109 대기화면 위치 변경 및 상품목록 유지 start
                    //기존
                    SaleItemGrid.RemoveAll();
                    //#20171109 대기화면 위치 변경 및 상품목록 유지 end
                    // 고객화면 거스름 표시
                    m_cCustDisp.SaleCompleteDisplay(m_cPosStatus.Sale.ChangeCashAmt);

                    // 캠페인 마스터 로딩
                    m_cCampaingMain.LoadCampaignCondition(new string[] { });
                    #endregion
                    return;
                }

                ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);              

                // 그리드의 현재 선택 행번호
                int nOldSelectRow = SaleItemGrid.SelectedIndex;

                int[] arGridItemWidth;
                if (m_cPosStatus.Base.DesignType == "1")        // 1안
                {
                    arGridItemWidth = new int[] { 40, 10, 175, 90, 60, 90, 100, 50, 50 };
                }
                else if (m_cPosStatus.Base.DesignType == "2")   // 2안
                {
                    arGridItemWidth = new int[] { 30, 10, 115, 65, 50, 70, 100, 40, 40 };
                }
                else
                {
                    arGridItemWidth = new int[] { 30, 10, 115, 63, 40, 67, 75, 40, 30 };
                    //arGridItemWidth = new int[] { 30, 10, 80, 70, 50, 70, 90, 40, 30 };
                }
                int[] arFontSize = new int[] { 10, 10, 10, 11, 11, 11, 11, 10, 14 };

                if (SaleItemGrid.GridDataItems.Count > alPluItem.Count)
                {
                    while (SaleItemGrid.GridDataItems.Count > alPluItem.Count)
                    {
                        SaleItemGrid.RemoveAt(SaleItemGrid.GridDataItems.Count - 1);
                    }
                }
                // SaleItemGrid.RemoveAll();
                Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          //그리드 데이터

                long nItemNo = 0;       // 번호
                for (int iRow = 0; iRow < alPluItem.Count; iRow++)
                {
                    Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)alPluItem[iRow];
                    bool bCancelDiv = false;
                    if (cItem.CANCEL_DIV == "1" || cItem.CANCEL_DIV_MAIN == "1") bCancelDiv = true;

                    //#Rhee, 20180209 미국 상품검색 후 상품 추가시 상품의 중분류로 이동 Start
                    if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS) && cItem.GRP_SEQ != string.Empty)
                    {                        
                        m_sPluItemCode = cItem.GRP_SEQ;                 // "999990001           01"                        
                    }
                    //#Rhee, 20180209 미국 상품검색 후 상품 추가시 상품의 중분류로 이동 End

                    // 상품메모 처리 
                    string itemName = cItem.ITEM_NAME;
                    string itemMemo = (string.IsNullOrWhiteSpace(cItem.ITEM_MEMO_1) ? "" : cItem.ITEM_MEMO_1)
                                    + (string.IsNullOrWhiteSpace(cItem.ITEM_MEMO_2) ? "" : " " + cItem.ITEM_MEMO_2)
                                    + (string.IsNullOrWhiteSpace(cItem.ITEM_MEMO_3) ? "" : " " + cItem.ITEM_MEMO_3);
                    if (cItem.FIRE_KEY) itemMemo = "FIRE KEY"; 
                    if (string.IsNullOrWhiteSpace(itemMemo) == false)
                    {
                        #region
                        using (Control ctrl = new Control())
                        {
                            using (Font f = new Font(m_cPosStatus.Base.FONT, arFontSize[1], FontStyle.Regular))
                            {
                                string temp = string.Empty;
                                string name = string.Empty;

                                temp = string.Empty;
                                name = itemName.Replace("\r\n", " ").Replace("\r", " ").Replace("\n", " ");
                                for (var i = 0; i < name.Length; i++)
                                {
                                    temp = name.Substring(0, i + 1);
                                    SizeF sizeF = ctrl.CreateGraphics().MeasureString(temp, f);
                                    if (sizeF.Width > arGridItemWidth[2])
                                    {
                                        itemName = name.Substring(0, i - 1);
                                        break;
                                    }
                                }

                                temp = string.Empty;
                                name = itemMemo.Replace("\r\n", " ").Replace("\r", " ").Replace("\n", " ");
                                for (var i = 0; i < name.Length; i++)
                                {
                                    temp = name.Substring(0, i + 1);
                                    SizeF sizeF = ctrl.CreateGraphics().MeasureString(temp, f);
                                    if (sizeF.Width > arGridItemWidth[2])
                                    {
                                        itemMemo = name.Substring(0, i - 1);
                                        break;
                                    }
                                }
                            }
                        }
                        #endregion

                        itemName += "\n" + itemMemo;
                    }

                    string sEtcName = "";

                    //1. 로스거래인지 체크
                    if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                    {
                        sEtcName = cItem.NONSALES_RSN_NM;
                    }
                    else
                    {
                        if (cItem.CPI_DC_AMT > 0) sEtcName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0829);
                        if (cItem.SET_DC_AMT > 0) sEtcName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0830) + cItem.SET_DC_GROUP_CD;
                        if (cItem.ITEM_DC_AMT > 0) sEtcName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0018);
                    }
                    if (SaleItemGrid.GetItemCount() > iRow) // 이미 그리드에 추가된 상품
                    {
                        #region
                        GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[iRow];
                        // No
                        CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                        if (cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
                        {
                            nItemNo++;
                            cGridExRowData.GridItemText = (nItemNo).ToString();
                        }
                        else
                        {
                            cGridExRowData.GridItemText = "";
                        }
                        cGridExRowData.GridItemValue = (iRow).ToString();
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        
                        // 과세구분
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[1];
                        cGridExRowData.GridItemText = cItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.FREE || cItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES ? "*" : "";
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridExRowData.GridItemValue = cItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.FREE || cItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES ? "*" : "";

                        // 상품명
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[2];
                        cGridExRowData.GridItemText = itemName;          //cItem.ITEM_NAME;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridExRowData.GridItemValue = cItem.ITEM_PLU_CD;

                        //2018.01.23;미주의 경우 NoTax 상품은 상품명 빨간색으로 표시;girak.kim;Start
                        if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS))
                        {
                            if (cItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES) cGridExRowData.ForeColor = Color.Red;
                            else cGridExRowData.ForeColor = Color.Black;
                        }                           
                        
                        //2018.01.23;미주의 경우 NoTax 상품은 상품명 빨간색으로 표시;girak.kim;End

                        // 단가
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[3];
                        cGridExRowData.GridItemText = m_cPosStatus.Global.NumericTOCurrency(cItem.SALE_PRC);
                        cGridExRowData.GridItemValue = cItem.SALE_PRC.ToString();
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        // 수량
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[4];
                        cGridExRowData.GridItemText = cItem.SALE_QTY.ToString();
                        cGridExRowData.GridItemValue = cItem.SALE_QTY.ToString();
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridExRowData.ForeColor = Color.Black;

                        // 할인
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[5];
                        cGridExRowData.GridItemText = m_cPosStatus.Global.NumericTOCurrency(cItem.TOT_DC_AMT);
                        cGridExRowData.GridItemValue = cItem.TOT_DC_AMT.ToString();
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        // 금액
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[6];
                        cGridExRowData.GridItemText = m_cPosStatus.Global.NumericTOCurrency(cItem.BILL_AMT);
                        cGridExRowData.GridItemValue = cItem.BILL_AMT.ToString();
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        // 비고
                        cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[7];
                        cGridExRowData.GridItemText = sEtcName;
                        cGridExRowData.GridItemValue = "";
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        #endregion
                    }
                    else//상품 클릭하여 그리드에 추가 되는 상품
                    {
                        #region
                        // Row Item
                        GridDataItem cGridDataItem = new GridDataItem();
                        if (iRow % 2 == 0)
                        {
                            cGridDataItem.GridItemBackColor = Color.FromArgb(250, 250, 250);
                        }
                        else
                        {
                            cGridDataItem.GridItemBackColor = Color.FromArgb(255, 255, 255);
                        }
                        cGridDataItem.GridItemBackColorClick = Color.FromArgb(219, 253, 252);
                        cGridDataItem.GridItemBackImage = null;
                        cGridDataItem.GridItemBackImageClick = null;
                        cGridDataItem.GridItemData = new System.Collections.Hashtable();

                        // No
                        CsmGridExRowData cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[0];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Center;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        if (cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
                        {
                            nItemNo++;
                            cGridExRowData.GridItemText = (nItemNo).ToString();
                        }
                        else
                        {
                            cGridExRowData.GridItemText = "";
                        }

                        cGridExRowData.GridItemValue = (iRow).ToString();
                        cGridExRowData.ForeColor = Color.FromArgb(155, 155, 156);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[0];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 과세구분
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[1];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Near;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = cItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.FREE || cItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES ? "*" : "";

                        cGridExRowData.GridItemValue = cItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.FREE || cItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES ? "*" : "";
                        cGridExRowData.ForeColor = Color.Red;
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[1];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);



                        // 상품명
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[2];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Near;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = itemName;          //cItem.ITEM_NAME;
                        cGridExRowData.GridItemValue = cItem.ITEM_PLU_CD;
                        cGridExRowData.ForeColor = Color.FromArgb(3, 3, 3);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[2];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 단가
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[3];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Far;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = m_cPosStatus.Global.NumericTOCurrency(cItem.SALE_PRC);

                        cGridExRowData.GridItemValue = cItem.SALE_PRC.ToString();
                        cGridExRowData.ForeColor = Color.FromArgb(100, 100, 100);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[3];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 수량
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[4];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Far;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = cItem.SALE_QTY.ToString();

                        cGridExRowData.GridItemValue = cItem.SALE_QTY.ToString();
                        //#20171107 수량 폰트색 검은색으로 변경 start
                        //마지막 상품은 색상이 변경이 안되어 추가 수정.
                        //기존
                        //cGridExRowData.ForeColor = Color.FromArgb(155, 155, 156);
                        //변경
                        cGridExRowData.ForeColor = Color.Black;
                        //#20171107 수량 폰트색 검은색으로 변경 end

                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[4];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 할인
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[5];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Far;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = m_cPosStatus.Global.NumericTOCurrency(cItem.TOT_DC_AMT);

                        cGridExRowData.GridItemValue = cItem.TOT_DC_AMT.ToString();
                        cGridExRowData.ForeColor = Color.Red;  //Color.FromArgb(155, 155, 156);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[5];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 금액
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[6];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Far;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = m_cPosStatus.Global.NumericTOCurrency(cItem.BILL_AMT);

                        cGridExRowData.GridItemValue = cItem.BILL_AMT.ToString();
                        cGridExRowData.ForeColor = Color.FromArgb(3, 3, 3);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[6];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 비고
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[7];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Center;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridItemText = sEtcName;

                        cGridExRowData.GridItemValue = "";
                        cGridExRowData.ForeColor = Color.FromArgb(155, 155, 156);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[7];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        // 삭제
                        cGridExRowData = new CsmGridExRowData();
                        cGridExRowData.GridItemWidth = arGridItemWidth[8];
                        cGridExRowData.ClickEventFlag = true;
                        cGridExRowData.HStringAlignment = StringAlignment.Center;
                        cGridExRowData.VStringAlignment = StringAlignment.Center;
                        cGridExRowData.GridRowImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.ITEM_GRID_ROW_DEL);
                        cGridExRowData.GridItemText = "X";

                        cGridExRowData.GridItemValue = "";
                        cGridExRowData.ForeColor = Color.FromArgb(155, 155, 156);
                        cGridExRowData.FontName = m_cPosStatus.Base.FONT;
                        cGridExRowData.FontSize = arFontSize[7];
                        cGridExRowData.FontStyle = FontStyle.Regular;
                        //cGridExRowData.StrikeThrough = bCancelDiv;
                        cGridDataItem.GridItemData.Add(cGridDataItem.GridItemData.Count, cGridExRowData);

                        SaleItemGrid.AddDataGridItem(cGridDataItem, GRID_EX_ITEM_BORDER_STYLE.BOTTOM, 1, Color.FromArgb(236, 236, 236));

                        #endregion
                    }
                }//for end
                //0:LastItem, 1::OldFocus
                if (nFocus == 1)
                {
                    if (nOldSelectRow >= SaleItemGrid.GridDataItems.Count) nOldSelectRow = SaleItemGrid.GridDataItems.Count - 1;

                    SaleItemGrid.SelectIndexItem(nOldSelectRow);
                }
                SaleItemGrid.Refresh();
                
               

                //// 상품 그리드에 상품 판매 등록 내역 표시 처리.
                //m_dtSaleItemGrid.Clear();

                //ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                //for (int iRow = 0; iRow < alPluItem.Count; iRow++)
                //{
                //    Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)alPluItem[iRow];
                //    string sCancelDiv = "0";
                //    if (cItem.CANCEL_DIV == "1" || cItem.CANCEL_DIV_MAIN == "1") sCancelDiv = "1";

                //    DataRow drRow = m_dtSaleItemGrid.NewRow();

                //    drRow["SEQ_NO"] = iRow + 1;
                //    drRow["PLU_NAME"] = cItem.ITEM_NAME;
                //    drRow["ITEM_PRICE"] = cItem.SALE_PRC;
                //    drRow["ITEM_QTY"] = cItem.SALE_QTY;
                //    drRow["DISCOUNT_AMT"] = (sCancelDiv == "1") ? "0" : m_cPosStatus.Global.NumericTOCurrency(cItem.TOT_DC_AMT);
                //    drRow["ITEM_AMT"] = (sCancelDiv == "1") ? "0" : m_cPosStatus.Global.NumericTOCurrency(cItem.BILL_AMT);
                //    drRow["REMARK"] = "";
                //    drRow["CANCEL"] = (sCancelDiv == "1") ? "취소" : "";

                //    m_dtSaleItemGrid.Rows.Add(drRow);
                //}
                //SaleItemGrid.CsmGridDataSource = m_dtSaleItemGrid;
                //SaleItemGrid.CsmGridFirstDisplayedScrollingRowIndex = 0;
                //SaleItemGrid.CsmGridSelectRow(SaleItemGrid.CsmGridRowsCount - 1);
                //SaleItemGrid.Refresh();

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 상품등록 중
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
                {

                    //로스면 로스 합계표시
                    if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                    {
                        // 총수량, 총매출액
                        txtQtySaleAmt.Text = m_cPosStatus.Global.NumericToQuantity(m_cTrnStatus.Head.TotQty) + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0998) + "  " +
                                m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.LossTotSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1)) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    }
                    else
                    {


                        // 총수량, 총매출액
                        txtQtySaleAmt.Text = m_cPosStatus.Global.NumericToQuantity(m_cTrnStatus.Head.TotQty) + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0998) + "  " +
                                m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1)) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;

                    }
                    // 총 할인 금액
                    txtDiscountAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotDcAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;

                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        txtVatSvc.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Head.SvcFeeAmt, m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED ? m_cTrnStatus.Head.SvcFeeVat : 0))
                            + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName + "/ "
                            + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotVatAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    }

                    // 받은금액 표시 처리
                    txtRecvedAmt.Text = m_cPosStatus.Global.NumericTOCurrency(0) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    // 순매출액 표시 처리
                    txtNetSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Head.NetSaleAmt, CmUtil.DoubleAdd(m_cTrnStatus.Head.SvcFeeAmt, m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED ? m_cTrnStatus.Head.SvcFeeVat : 0)) * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1))
                        + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;  
                }
                else
                {
                    //로스면 로스 합계표시
                    if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                    {
                        // 총수량, 총매출액
                        txtQtySaleAmt.Text = m_cPosStatus.Global.NumericToQuantity(m_cTrnStatus.Head.TotQty) + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0998) + "  " +
                                m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                                m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.LossTotSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));
                    }
                    else
                    {
                        // 총수량, 총매출액
                        txtQtySaleAmt.Text = m_cPosStatus.Global.NumericToQuantity(m_cTrnStatus.Head.TotQty) + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0998) + "  " +
                                m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                                m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));
                    }
                    // 총 할인 금액
                    //txtDiscountAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                    //        m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotDcAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? -1 : 1));

                    txtDiscountAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotDcAmt);

                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        txtVatSvc.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Head.SvcFeeAmt, m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED ? m_cTrnStatus.Head.SvcFeeVat : 0)) + "/ " +
                            m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotVatAmt);
                    }

                    // 받은금액 표시 처리
                    txtRecvedAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(0);
                    // 순매출액 표시 처리
                    //txtNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                    //        m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.NetSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));

                    txtNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                            m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Head.NetSaleAmt, CmUtil.DoubleAdd(m_cTrnStatus.Head.SvcFeeAmt, m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED ? m_cTrnStatus.Head.SvcFeeVat : 0)) * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));
                }

                // 상품 등록내역 고객용 화면 표시
                m_cCustDisp.DisplaySaleItemList(true, true, SaleItemGrid.SelectedIndex);

                if (m_cTrnStatus.Sale.CampaignFileName != "")
                {
                    picCampaign.Image = CmUtil.LoadImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CAMPAIGN + m_cTrnStatus.Sale.CampaignFileName);
                    //picCampaign.Visible = picCampaign.Image != null ? true : false;
                }
                else
                    picCampaign.Visible = 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);
            }
            finally
            {
                this.ResumeLayout(true);
                this.Update();

                if (m_cTrnStatus.Sale.CampaignFileName != "")
                {
                    picCampaign.Visible = picCampaign.Image != null ? true : false;
                }
            }
        }
        #endregion

        #region 기능 버튼 이벤트 및 기능 업무 처리
        /// <summary>
        /// 기능버튼 선택
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void btnFuncSale_FuncClickHandler(object sender, string sFuncCode)
        {
            string DCValue = string.Empty;
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                if(sFuncCode.Equals(PosKey.MENU_KEY.SALE_DC))
                    DCValue = txtInPut.Text;
                tmrSaleTimer.Enabled = false;
                if (picCampaign.Visible == true) picCampaign.Visible = false;
                //m_cCustDisp.DisplayCampaign("", "");

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)            // 판매대기 모드
                {
                    switch (sFuncCode)
                    {
                        case PosKey.MENU_KEY.SALE_EXIT:	            // 판매종료
                            SaleMainExit();
                            return;
                    }
                    DisplayInit(true, false);
                }
                else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                {
                    if (sFuncCode == PosKey.MENU_KEY.ADD_MENU && pnlSubMenu.Visible == true)
                    {
                        pnlSubMenu.Visible = false;
                        tmrSaleTimer.Enabled = true;
                        return;
                    }

                    //충전, 판매 거래 경우 안 닫음!
                    if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == false)
                    {
                        pnlSetMenu.Visible = false;
                        pnlSubMenu.Visible = false;
                    }
                }
                else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_WAIT && m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.TABLE_GROUP_PAY)
                {
                    switch (sFuncCode)
                    {
                        case PosKey.MENU_KEY.SALE_EXIT:	            // 판매종료
                        case PosKey.MENU_KEY.ORDER_COMPLETED:       // 주문완료 
                            SaleMainExit();
                            return;
                    }
                }

                // 그리드의 현재 선택 행번호
                int nSelectRow = SaleItemGrid.SelectedIndex;
                string sSelectRow = "";
                if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
                {
                    Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
                    GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow];
                    // No
                    CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                    sSelectRow = cGridExRowData.GridItemValue;
                }

                // 키유효성 체크
                if (m_cDataCommon.FunctionKeyValidity(sFuncCode) == false)
                {
                    WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
                    tmrSaleTimer.Enabled = true;
                    return;
                }


                CsmFunc tmpFunc = new CsmFunc();
                if (((Cosmos.UI.CsmFunc)sender) == btnFuncItem)         //Right
                    tmpFunc = btnFuncItem;
                else if (((Cosmos.UI.CsmFunc)sender) == btnFuncSale)    //Left
                    tmpFunc = btnFuncSale;

                // 키 그룹 판매원 권한 체크
                if (WinBasic.CheckMenuKeyAuth(sFuncCode) == false) return;

                // 키 그룹 체크
                if (m_cDataCommon.FunctionKeySubMenuLoad(sFuncCode) == true)
                {
                    if (tmpFunc != null)
                    {
                        if (sFuncCode == PosKey.MENU_KEY.ESC_PREVIOUS)      //이전
                            tmpFunc.DisplayPrevButton();                    // 기능 버튼 표시 
                        else
                            tmpFunc.DisplayFuncButton(sFuncCode);           // 기능 버튼 표시 
                    }
                }
                else
                {
                    if (sFuncCode == PosKey.MENU_KEY.ESC_PREVIOUS)      //이전
                    {
                        tmpFunc.DisplayPrevButton();                    // 기능 버튼 표시 
                    }
                    else
                    {
                        // 기능 항목 처리
                        this.rtbMotMain.Visible = false;

                        //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start
                        //기존
                        //m_cSaleMainProc.ExecuteSaleMainProcess(sFuncCode, txtInPut.Text, sSelectRow.ToString(), "");
                        //변경
                        //m_cSaleMainProc.ExecuteSaleMainProcess(sFuncCode, txtInPut.Text, sSelectRow.ToString(), "", true);
                        //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end
                        this.rtbMotMain.Visible = true;
                        
                        //----------------------------------------------------------------------------------------------------
                        // 만약 판매화면에서 전체취소 버튼 클릭시
                        // 해피포인트 제휴할인 변수 초기화 함수를 호출한다.
                        //----------------------------------------------------------------------------------------------------
                        // (원본) m_cSaleMainProc.ExecuteSaleMainProcess(sFuncCode, txtInPut.Te바xt, sSelectRow.ToString(), "");
                        //----------------------------------------------------------------------------------------------------
                        #region 판매화면 초기화시 해피포인트 제휴할인 변수 초기화 함수를 호출한다.
                        bool blnResult = m_cSaleMainProc.ExecuteSaleMainProcess(sFuncCode, txtInPut.Text, sSelectRow.ToString(), "", true); 
                        if (blnResult == true)
                        {
                            if (sFuncCode == PosKey.MENU_KEY.TRADE_STOP) { SubPriorReadingVarClear(true); }
                        }
                        #endregion
                        this.rtbMotMain.Visible = true;
                    }
                }

                //DisplayInit(true, false);
                // 상품등록 내역 표시
                //DisplayItem(0, false);

                SetOwnPartDiv(false);
                WinSale.SetTradType(lblSaleStatus, pnlTopBg, "", "");

                if (sFuncCode.Equals(PosKey.MENU_KEY.SALE_DC))                
                    txtInPut.Text = DCValue;                
                else
                    txtInPut.Text = "";
                TxtInPutFocus();

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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
            {
                // 테이블 데이터 백업!
                m_cTrnStatus.Head.FloorCd = m_cPosStatus.Sale.SelectFloorCd;
                m_cTrnStatus.Head.TableNo = m_cPosStatus.Sale.SelectTableNo;
                m_cTrnStatus.Head.FloorNm = m_cPosStatus.Sale.SelectFloorNm;
                m_cTrnStatus.Head.TableNm = m_cPosStatus.Sale.SelectTableNm;
                
                tmrSaleTimer.Enabled = true;

                CmUtil.IgnoreMouseClick(this);  // 마우스 클릭 무시
            }
        }

        private void txtInput_Enter(object sender, EventArgs e)
        {
            try
            {
                padInPut.SetActiveControl = (Control)sender;
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }
        /// <summary>
        /// 입력박스 이벤트 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncValue"></param>
        private void txtInPut_EditBoxKeyDownEvent(object sender, string sFuncValue)
        {
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                tmrSaleTimer.Enabled = false;

                string sInPutData = txtInPut.Text;
                //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start
                bool bReturn = true;
                //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end

                // 그리드의 현재 선택 행번호
                int nSelectRow = SaleItemGrid.SelectedIndex;
                string sSelectRow = "";
                if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
                {
                    Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
                    GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow]; // No
                    CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                    sSelectRow = cGridExRowData.GridItemValue;
                }

                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) DisplayInit(true, false);

                if (sFuncValue == PosKey.MENU_KEY.ENTER)
                {

                    //#2017122 #13238 LG 은평_은평_부가메뉴 입력 안되는 증상 start, phj
                    if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
                    {
                        WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0022));
                        txtInPut.Text = "";
                        return;
                    }
                    //#2017122 #13238 LG 은평_은평_부가메뉴 입력 안되는 증상 end, phj


                    //충전, 판매 거래 경우
                    if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == true) return;
                    if (sInPutData == "") return;
                    //17.05.18 dkshin 쇼킹박스 추가
                    //if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.LOG.SHOCKING_BOX) == true)
                    if (m_cTrnStatus.Head.ShockingBoxStat == "1")
                    {
                        WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0699));
                        txtInPut.Text = "";
                        return;
                    }

                    UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "BarCode Sacan : " + sInPutData);

                    //17.05.18 dkshin 쇼킹박스 추가
                    //-------------start---------------
                    // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                    //m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.KEY_IN + sInPutData);
                    //sInPutData(바코드 데이타)조회 후 m_cTrnStatus.Head.TradeKind가 99(쇼킹박스) 일때 판매화면에 상품 보여주기
                    //쇼킹박스는 pc만_ho_20170828
                    if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC && m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
                    {
                        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
                        //기존
                        //string sRet = m_cSaleService.PosShockingBoxSearch(sInPutData);
                        //if (sRet == UserCom.RST_OK)
                        //{
                        //    if (SaleItemGrid.GridDataItems.Count > 0) //제품선택후 쇼킹박스상품을 불러온경우.
                        //    {
                        //        txtInPut.Text = "";
                        //        return;
                        //    }
                        //
                        //    //m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX;
                        //    m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.SHOCKING_BOX, "", "", sInPutData);
                        //}

                        //변경
                        string sTradeKind = string.Empty;
                        sTradeKind = m_cSaleService.PosShockingBoxSearch(sInPutData);
                        if (sTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX || sTradeKind == ItemConst.TRAN_KIND.LOG.SHOCKING_BOX)
                        {
                            if (SaleItemGrid.GridDataItems.Count > 0) //제품선택후 쇼킹박스상품을 불러온경우.
                            {
                                txtInPut.Text = "";
                                return;
                            }

                            if (sTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX)
                            {
                                // 상품정보출력(해피오더 랜덤박스)
                                m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.ITEMINFO_PRINT, "", "", sInPutData);
                            }
                            else if (sTradeKind == ItemConst.TRAN_KIND.LOG.SHOCKING_BOX)
                            {
                                // 쇼킹박스
                                m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.SHOCKING_BOX, "", "", sInPutData);
                            }
                        }
                        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
                        else
                        {
                            // 수량합산 모드이면 수량 합산 처리(0:미합산, 1:최종상품합산, 2:상품별합산)
                            if (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2")
                            {
                                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                                {
                                    ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                                    for (int i = 0; i < alTrPluItem.Count; i++)
                                    {
                                        Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alTrPluItem[i];

                                        if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;
                                        if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL) continue;
                                        if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) continue;
                                        if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES) continue;

                                        if (cPluItem.SUB_SHOP_CD != m_cPosStatus.Base.SubShopNo || cPluItem.ITEM_BAR_CD != sInPutData) continue;

                                        if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SUM_DC_AMT > 0) continue;
                                        if (cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0) continue;
                                        if (cPluItem.SALE_QTY >= 99999) continue;
                                        //#20170825 오픈 상품은 무조건 새 row로 입력 start
                                        if (cPluItem.OPEN_ITEM_DIV == "1") continue;
                                        //#20170825 오픈 상품은 무조건 새 row로 입력 end

                                        // 수량 증가 처리
                                        m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", i.ToString(), "");

                                        SaleItemGrid.SelectIndexItem(i);
                                        m_cCustDisp.DisplaySaleItemList(true, true, i);

                                        txtInPut.Text = "";
                                        m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                                        return;
                                    }
                                }
                            }

                            //*****************************************************************************
                            // (2017.11.01) 해피포인트 제휴할인 선리딩 처리
                            //-----------------------------------------------------------------------------
                            // - 만약 입력박스에서 해피포인트 카드 및 제휴할인 카드를 리딩했을 때
                            //   만약, 해피포인트 카드일 경우 해피포인트 카드번호를 전역변수에 저장한다.
                            //   (ex. 해피포인트 카드번호 : m_cPosStatus.Sale.strHappyPointCardNo)
                            //   만약, 제휴할인 카드일 경우 제휴할인 카드번호를 전역변수에 저장한다.
                            //   (ex. 제휴할인 카드번호 : m_cPosStatus.Sale.strMobileUnityCardNo)
                            //*****************************************************************************
                            //*****************************************************************************
                            // (2017.11.01) 해피포인트 제휴할인 선리딩 처리
                            //-----------------------------------------------------------------------------
                            // - 만약 입력박스에서 해피포인트 카드 및 제휴할인 카드를 리딩했을 때
                            //   만약, 해피포인트 카드일 경우 해피포인트 카드번호를 전역변수에 저장한다.
                            //   (ex. 해피포인트 카드번호 : m_cPosStatus.Sale.strHappyPointCardNo)
                            //   만약, 제휴할인 카드일 경우 제휴할인 카드번호를 전역변수에 저장한다.
                            //   (ex. 제휴할인 카드번호 : m_cPosStatus.Sale.strMobileUnityCardNo)
                            //*****************************************************************************
                            #region 해피포인트 제휴할인 선리딩 처리
                            if (sInPutData != "" && sInPutData.Length > 15)
                            {
                                //===================================================================
                                // 해피포인트 카드 체크
                                //-------------------------------------------------------------------
                                // - 만약 입력된 값의 앞의 4자리가
                                //   정의된 해피포인트 프리픽스(HP_CARD_PRIFIX) 값과 동일할 경우
                                //   (ex. public const string HP_CARD_PRIFIX = "8231";)
                                //   입력된 값을 전역변수에 저장하여 해피포인트 카드 번호로 사용한다.
                                //-------------------------------------------------------------------
                                // - frmPointHappyPoint_Load 이벤트에서 처리함
                                //===================================================================
                                #region 해피포인트 카드 체크
                                if (sInPutData.Substring(0, 4) == PosConst.HP_CARD_PRIFIX)
                                {
                                    //-----------------------------------------------------------------
                                    // 만약 상품이 하나도 등록되지 않았을 경우에 에러메시지를 표시한다.
                                    // - 다시 사용하기로 했음
                                    //-----------------------------------------------------------------
                                    #region 만약 상품이 하나도 등록되지 않았을 경우에 에러메시지를 표시한다.
                                    //if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                                    //{
                                    //    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0020);    // 판매 대기중에 처리 할수 없는 기능 입니다.
                                    //    DisplayInit(true, false);
                                    //    return;
                                    //}
                                    #endregion

                                    #region 만약 결제 기능키 항목에 해피포인트('00058')이 없을 경우 에러메시지를 표시한다.
                                    if (gdtFuncKey.Rows.Count != 0)
                                    {
                                        DataRow[] _drFuncKey = gdtFuncKey.Select("FUNC_ID = '" + PosKey.MENU_KEY.HAPPY_POINT + "'");
                                        if (_drFuncKey.Length == 0)
                                        {
                                            WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0059);    // 메뉴키 마스터가 없습니다
                                            DisplayInit(true, false);
                                            return;
                                        }
                                    }
                                    #endregion

                                    //---------------------------------------------------
                                    // 입력된 해피포인트 카드 번호를 전역변수에 저장한다.
                                    //---------------------------------------------------
                                    #region 입력된 해피포인트 카드 번호를 전역변수에 저장한다.

                                    //#20180620 해피포인트 선리딩시 '=' 붙이는 기능 제거 start
                                    //키인으로 입력하면 해피포인트 사용을 못해야 되는제 사용 가능함
                                    //기존
                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
                                    //기존
                                    //m_cPosStatus.Sale.strHappyPointCardNo = sInPutData+"=";
                                    //변경

                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start, 20181025
                                    //해피포인트 선리딩시 해피포인트 사용이 안되는 증상 수정
                                    //기존
                                    //m_cPosStatus.Sale.strHappyPointCardNo = sInPutData;
                                    //변경
                                    m_cPosStatus.Sale.strHappyPointCardNo = sInPutData + "=";
                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end, 20181025

                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
                                    //변경
                                    //m_cPosStatus.Sale.strHappyPointCardNo = sInPutData;// +"=";
                                    //#20180620 해피포인트 선리딩시 '=' 붙이는 기능 제거 end

                                    m_cPosStatus.Sale.strHappyPointCardNo_Title = "HPC";
                                    #endregion

                                    //*** MoonSeokWoo 2017.12.12 Add
                                    if(pnlPayMainBack.Visible == false)
                                    AllianceCardInit(true, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0789), true);
                                    //*** MoonSeokWoo 2017.12.12 End

                                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
                                    #region 고객 구매이력 정보 표시 및 해피쿠폰 발송
                                    //결제화면이 표시 안된 경우 해피포인트 조회 -> 고객번호로 POS서버 조회 -> 고객구매이력 표시

                                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                                    //해당 옵션 사용하지 않고 STR_SEND_CPN_MST 테이블의 사용여부로 판단
                                    //기존
                                    /*
                                    if (PosMstManager.GetPosOption(POS_OPTION.OPT514) == "1" && 
                                        pnlPayMainBack.Visible == false && 
                                        m_cPosStatus.Sale.strHappyPointCardNo != "")
                                    */
                                    //변경
                                    
                                    // TEST START
                                    //m_cPosStatus.Mst.BuyHistShowYn = "1";
                                    // TEST END

                                    if (m_cPosStatus.Mst.BuyHistShowYn == "1" && 
                                        pnlPayMainBack.Visible == false && 
                                        m_cPosStatus.Sale.strHappyPointCardNo != "")
                                    
                                    //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510
                                    {
                                        //고객 구매이력 화면 미표시
                                        pnlBuyHist.Visible = false;

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

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

                                        //해피포인트 조회 후 고객번호 획득 (고객번호(10) + 전자영수증 수신여부(1) + 단골여부(1) + 기타정보(23))
                                        string sHppMembNo = SchHappyPointMembInfo(PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP, m_cPosStatus.Sale.strHappyPointCardNo);

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

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

                                        //해피포인트 고객번호가 있는 경우 POS서버로 구매이력정보 수신
                                        if (sHppMembNo !="")
                                        {
                                            //수신 데이터 있는 경우 표시
                                            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] = ""; }

                                            //#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 = "1008346700";
                                            //#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개월 | 전월 | 객단가 | 선호제품유형      | 최근구매일    | 최근 케익 구매일 |코드|문구1 | 문구2|
                                                // Y        | 0(0)      | 0    | 0      | 완제생크림 , 버터 | 21일전 (05/03)| 21일전 (05/03)   |01  |어제  | 케익 |

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

                                                //#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

                                                BuyHistTime = DateTime.Now;
                                                
                                                //#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
                                                {
                                                    //m_cCustDisp.ScreenVipDisplay(false);
                                                    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;
                                            }


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

                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
                                    #region SPC임직원 여부 조회
                                    if (m_cPosStatus.Sale.strHappyPointCardNo != "")
                                    {
                                        m_cPosStatus.Sale.strEmpInfo = SchHappyPointEmpInfo(PosConst.POS_VAN_MASTER.INPUT_TYPE.VAN_SWIP, m_cPosStatus.Sale.strHappyPointCardNo);
                                    }
                                    #endregion SPC임직원 여부 조회
                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end

                                    //----------------------------------------
                                    // 해피포인트 상태바 표시을 위한 배열 설정
                                    //----------------------------------------
                                    #region 해피포인트 상태바 표시를 위한 배열 설정
                                    if (m_cPosStatus.Sale.strPriorReading_Title[0] == null || m_cPosStatus.Sale.strPriorReading_Title[0] == "")
                                    {
                                        //--------------------------------------------------------
                                        // 만약 첫번째로 리딩된 해피포인트 및 제휴카드가 없을 경우
                                        // -> 첫번째에 해피포인트를 그대로 입력한다.
                                        //--------------------------------------------------------
                                        m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                    }
                                    else if (m_cPosStatus.Sale.strPriorReading_Title[1] == null || m_cPosStatus.Sale.strPriorReading_Title[1] == "")
                                    {
                                        //--------------------------------------------------------
                                        // 만약 두번째로 리딩된 해피포인트 및 제휴카드가 없을 경우
                                        // -> 두번째에 해피포인트를 입력한다.
                                        // 단, 첫번째로 리딩된 해피포인트가 없을 경우에만 입력한다.
                                        //--------------------------------------------------------
                                        if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC")
                                        {
                                            m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                        }
                                    }
                                    else
                                    {
                                        //----------------------------------------------------------------
                                        // 만약 첫번째, 두번째로 리딩한 해피포인트 및 제휴카드가 있을 경우
                                        // 아무 처리를 안한다.
                                        //----------------------------------------------------------------
                                    }
                                    #endregion

                                    // 텍스트 박스 클리어 -----
                                    txtInPut.Text = "";
                                    if(pnlPayMainBack.Visible == true)
                                    {
                                        #region 만약 해피포인트 값이 설정되어 있을 경우 해피포인트 화면을 표시한다.
                                        if (m_cPosStatus.Sale.strHappyPointCardNo != "")
                                        {
                                            //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
                                            //기존
                                            // 해피포인트(00058) 화면 표시 -----
                                            //PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT, "1");
                                            //변경
                                            #region SPC임직원 여부, 기능키 배치 여부에 따라 SPC임직원할인(결제), SPC임직원할인(할인) 화면 표시
                                            if (m_cPosStatus.Sale.strEmpInfo == "3A")
                                            {
                                                // SPC임직원할인(결제) - 상품에 적용하지 않음
                                                DataTable dtFuncKeyArr1 = m_cDataCommon.SeletFuncKeyGroupArr(PosKey.MENU_KEY.SPC_EMPLOYEE_DC_PAY);
                                                // SPC임직원할인(할인) - 상품에 적용
                                                DataTable dtFuncKeyArr2 = m_cDataCommon.SeletFuncKeyGroupArr(PosKey.MENU_KEY.SPC_EMPLOYEE_DC);

                                                if (dtFuncKeyArr1 == null || dtFuncKeyArr1.Rows.Count <= 0)
                                                {
                                                    if (dtFuncKeyArr2 == null || dtFuncKeyArr2.Rows.Count <= 0)
                                                    {
                                                        // SPC임직원할인(결제), SPC임직원할인(할인) 둘다 기능키가 배치되어 있지 않은 경우
                                                        // 해피포인트(00058) 화면 표시 -----
                                                        PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT, "1");
                                                    }
                                                    else
                                                    {
                                                        // SPC임직원할인(할인) 기능키가 배치되어 있는 경우
                                                        // 임직원할인(00064) 화면 표시 -----
                                                        PayComFuncion(PosKey.MENU_KEY.SPC_EMPLOYEE_DC, "2");
                                                    }
                                                }
                                                else
                                                {
                                                    // SPC임직원할인(결제) 기능키가 배치되어 있는 경우
                                                    // 임직원할인(00281) 화면 표시 -----
                                                    PayComFuncion(PosKey.MENU_KEY.SPC_EMPLOYEE_DC_PAY, "2");
                                                }
                                            }
                                            else
                                            {
                                                // SPC임직원이 아닌 경우
                                                // 해피포인트(00058) 화면 표시 -----
                                                PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT, "1");
                                            }
                                            #endregion SPC임직원 여부, 기능키 배치 여부에 따라 SPC임직원할인(결제), SPC임직원할인(할인) 화면 표시
                                            //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
                                        }
                                        #endregion
                                    }
                                    return;
                                }
                                #endregion

                                //=======================================================================
                                // 제휴할인 카드 체크
                                //-----------------------------------------------------------------------
                                // - 제휴할인 카드 폼에 포함되어 있는
                                //   제휴카드 종류 자동 선택(SelectMobileUnityKind) 함수를 이용하여
                                //   제휴할인 카드가 맞는지 체크한다.
                                // - 만약 제휴할인 카드가 맞을 경우 
                                //   입력된 값을 전역변수에 저장하여 제휴할인 카드 번호로 사용한다.
                                //-----------------------------------------------------------------------
                                // - frmPntMobileUnity_Load 이벤트에서 처리함
                                // - 오버로딩 함수 : public frmPntMobileUnity(string _strDiv)
                                //                   public bool SelectMobileUnityKind(string _strCardNo)
                                //=======================================================================
                                #region 제휴할인 카드 체크

                                //-----------------------------------------------------
                                // 제휴할인 카드 폼의 제휴카드 종류 자동 선택 함수 호출
                                //-----------------------------------------------------
                                #region 제휴할인 카드 폼의 제휴카드 종류 자동 선택 함수 호출
                                frmPntMobileUnity frmPntMobileUnity = new frmPntMobileUnity("Initial");
                                string _strCardDiv = frmPntMobileUnity.SelectMobileUnityKind(sInPutData);
                                #endregion

                                if (_strCardDiv != "")
                                {
                                    //-----------------------------------------------------------------
                                    // 만약 상품이 하나도 등록되지 않았을 경우에 에러메시지를 표시한다.
                                    // - 다시 사용하기로 했음
                                    //-----------------------------------------------------------------
                                    #region 만약 상품이 하나도 등록되지 않았을 경우에 에러메시지를 표시한다.
                                    //if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                                    //{
                                    //    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0020);    // 판매 대기중에 처리 할수 없는 기능 입니다.
                                    //    DisplayInit(true, false);
                                    //    return;
                                    //}
                                    #endregion

                                    #region 만약 결제 기능키 항목에 제휴할인 카드('00292')이 없을 경우 에러메시지를 표시한다.
                                    if (gdtFuncKey.Rows.Count != 0)
                                    {
                                        DataRow[] _drFuncKey = gdtFuncKey.Select("FUNC_ID = '" + PosKey.MENU_KEY.MOBILE_UNITY + "'");
                                        if (_drFuncKey.Length == 0)
                                        {
                                            WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0059);    // 메뉴키 마스터가 없습니다
                                            DisplayInit(true, false);
                                            return;
                                        }
                                    }
                                    #endregion

                                    //--------------------------------------------
                                    // 입력된 제휴카드 번호를 전역변수에 저장한다.
                                    //--------------------------------------------
                                    // - _strCardDiv : SKT, KT, LGT
                                    //--------------------------------------------
                                    #region 입력된 제휴카드 번호를 전역변수에 저장한다.
                                    m_cPosStatus.Sale.strMobileUnityCardNo = sInPutData;
                                    m_cPosStatus.Sale.strHappyPointCardNo_Title = _strCardDiv;
                                    #endregion

                                    //*** MoonSeokWoo 2017.12.12 Add
                                    if (pnlPayMainBack.Visible == false)
                                    AllianceCardInit(true, _strCardDiv, false);
                                    //*** MoonSeokWoo 2017.12.12 End

                                    //--------------------------------------
                                    // 제휴카드 상태바 표시을 위한 배열 설정
                                    //--------------------------------------
                                    #region 제휴카드 상태바 표시를 위한 배열 설정
                                    if (m_cPosStatus.Sale.strPriorReading_Title[0] == null || m_cPosStatus.Sale.strPriorReading_Title[0] == "")
                                    {
                                        //--------------------------------------------------------
                                        // 만약 첫번째로 리딩된 해피포인트 및 제휴카드가 없을 경우
                                        // -> 그대로 입력한다.
                                        //--------------------------------------------------------
                                        m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                    }
                                    else if (m_cPosStatus.Sale.strPriorReading_Title[1] == null || m_cPosStatus.Sale.strPriorReading_Title[1] == "")
                                    {
                                        //-------------------------------------------------------------------
                                        // 만약 두번째로 리딩된 해피포인트 및 제휴카드가 없을 경우
                                        // -> 두번째에 해피포인트를 입력한다.
                                        // 단, 첫번째로 리딩된 제휴카드가 있을 경우 이전 제휴카드를 치환한다.
                                        //-------------------------------------------------------------------
                                        if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC")
                                        {
                                            m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                        }
                                        else
                                        {
                                            m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                        }
                                    }
                                    else
                                    {
                                        //----------------------------------------------------------------
                                        // 만약 첫번째, 두번째로 리딩한 해피포인트 및 제휴카드가 있을 경우
                                        // 이전 제휴카드를 치환한다.
                                        //----------------------------------------------------------------
                                        if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC")
                                        {
                                            m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                        }
                                        else
                                        {
                                            m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
                                        }
                                    }
                                    #endregion

                                    // 텍스트 박스 클리어 -----
                                    txtInPut.Text = "";
                                    if (pnlPayMainBack.Visible == true)
                                    {
                                        #region '해피포인트' 및 '제휴할인 카드' 화면을 표시한다.                                        
                                        #region 만약 제휴할인 카드 값이 설정되어 있을 경우 제휴할인 카드 화면을 표시한다.
                                        if (m_cPosStatus.Sale.strMobileUnityCardNo != "")
                                        {
                                            // 제휴할인 카드(00292) 화면 표시 -----
                                            PayComFuncion(PosKey.MENU_KEY.MOBILE_UNITY, "2");
                                        }
                                        #endregion
                                        #endregion
                                    }
                                    return;
                                }
                                #endregion
                            }
                            #endregion

                            //*****************************************************************************
                            // (2017.11.10) 바코드 중복 처리
                            //-----------------------------------------------------------------------------
                            // - 만약 입력박스에서 1개의 상품을 리딩했는데 
                            //   상품바코드테이블(MST_ITEM_BAR_CD)에 2개 이상의 데이터가 존재할 경우
                            //   상품선택화면(frmMultiItem)을 표시해서 사용자 1개의 상품을 선택하도록 한다.
                            //*****************************************************************************
                            #region 바코드 중복 처리
                            if (sInPutData != "")
                            {
                                //#20181102 상품 터치, 바코드 스캔시 동일 상품인 경우 수량 증가 안되는 증상 수정 start
                                //기존
                                #region 기존
                                DataTable dtDataInfo = m_cDataCommon.SeletItemMstNmToScanCode("0000007", sInPutData);
                                if (dtDataInfo != null && dtDataInfo.Rows.Count > 1)
                                {
                                    frmMultiItem fForm = new frmMultiItem(dtDataInfo);
                                    if (DialogResult.OK == fForm.ShowDialog())
                                    {
                                        // 사용자가 선택한 매장코드 설정 -----
                                        string _strStorCD = fForm.strStorCD;

                                        // 사용자가 선택한 상품코드 설정 -----
                                        string _strSelectItemCD = fForm.strSelectItemCD;

                                        //-------------------------
                                        // EtcData=0:수입력 값 설정
                                        //-------------------------
                                        #region EtcData=0:수입력 값 설정
                                        sInPutData = _strStorCD + "   " + _strSelectItemCD;

                                        //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start
                                        //기존
                                        /*
                                        // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                                        m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sInPutData);
                                        */
                                        //변경
                                        //상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                                        bReturn = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sInPutData);
                                        //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end
                                        #endregion
                                    }
                                    else { return; }
                                }
                                else
                                {
                                    //-------------------------------------------------
                                    // 만약 중복상품이 아닐경우에는 
                                    // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                                    //-------------------------------------------------
                                    //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start
                                    //기존
                                    //m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.KEY_IN + sInPutData);
                                    //변경
                                    bReturn = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.KEY_IN + sInPutData);
                                    //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end
                                }
                                #endregion 기존
                                //변경
                                #region 변경
                                //DataTable dtDataInfo = m_cDataCommon.SeletItemMstNmToScanCode("0000007", sInPutData);
                                //if (dtDataInfo != null && dtDataInfo.Rows.Count > 1)
                                //{
                                //    frmMultiItem fForm = new frmMultiItem(dtDataInfo);
                                //    if (DialogResult.OK == fForm.ShowDialog())
                                //    {
                                //        // 사용자가 선택한 매장코드 설정 -----
                                //        string _strStorCD = fForm.strStorCD;

                                //        // 사용자가 선택한 상품코드 설정 -----
                                //        string _strSelectItemCD = fForm.strSelectItemCD;

                                //        //-------------------------
                                //        // EtcData=0:수입력 값 설정
                                //        //-------------------------
                                //        #region EtcData=0:수입력 값 설정

                                //        string sSchData = _strStorCD + "   " + _strSelectItemCD;

                                //        if (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2")
                                //        {
                                //            if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                                //            {
                                //                ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                                //                for (int i = 0; i < alTrPluItem.Count; i++)
                                //                {
                                //                    Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alTrPluItem[i];

                                //                    if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;
                                //                    if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL) continue;
                                //                    if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) continue;
                                //                    if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES) continue;

                                //                    if (cPluItem.SUB_SHOP_CD != sSchData.Substring(0, 10).Trim() || cPluItem.ITEM_PLU_CD != sSchData.Substring(10)) continue;

                                //                    if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SUM_DC_AMT > 0) continue;
                                //                    if (cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0) continue;
                                //                    if (cPluItem.SALE_QTY >= 99999) continue;
                                //                    //#20170825 오픈 상품은 무조건 새 row로 입력 start
                                //                    if (cPluItem.OPEN_ITEM_DIV == "1") continue;
                                //                    //#20170825 오픈 상품은 무조건 새 row로 입력 end

                                //                    // 수량 증가 처리
                                //                    bReturn = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", i.ToString(), "");

                                //                    SaleItemGrid.SelectIndexItem(i);
                                //                    m_cCustDisp.DisplaySaleItemList(true, true, i);
                                //                    txtInPut.Text = "";

                                //                    return;
                                //                }
                                //            }
                                //        }

                                //        #endregion
                                //    }
                                //    else { return; }
                                //}
                                //else
                                //{
                                //    if (dtDataInfo != null && dtDataInfo.Rows.Count == 1)
                                //    {
                                //        string sSchData = dtDataInfo.Rows[0]["STOR_CD"].ToString() + "   " + dtDataInfo.Rows[0]["ITEM_CD"].ToString();

                                //        if (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2")
                                //        {
                                //            if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                                //            {
                                //                ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                                //                for (int i = 0; i < alTrPluItem.Count; i++)
                                //                {
                                //                    Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alTrPluItem[i];

                                //                    if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;
                                //                    if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL) continue;
                                //                    if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) continue;
                                //                    if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES) continue;

                                //                    if (cPluItem.SUB_SHOP_CD != sSchData.Substring(0, 10).Trim() || cPluItem.ITEM_PLU_CD != sSchData.Substring(10)) continue;

                                //                    if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SUM_DC_AMT > 0) continue;
                                //                    if (cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0) continue;
                                //                    if (cPluItem.SALE_QTY >= 99999) continue;
                                //                    //#20170825 오픈 상품은 무조건 새 row로 입력 start
                                //                    if (cPluItem.OPEN_ITEM_DIV == "1") continue;
                                //                    //#20170825 오픈 상품은 무조건 새 row로 입력 end

                                //                    // 수량 증가 처리
                                //                    bReturn = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", i.ToString(), "");

                                //                    SaleItemGrid.SelectIndexItem(i);
                                //                    m_cCustDisp.DisplaySaleItemList(true, true, i);
                                //                    txtInPut.Text = "";

                                //                    return;
                                //                }
                                //            }
                                //        }

                                //    }
                                //    //-------------------------------------------------
                                //    // 만약 중복상품이 아닐경우에는 
                                //    // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                                //    //-------------------------------------------------

                                //    //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start
                                //    //기존
                                //    //m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.KEY_IN + sInPutData);
                                //    //변경
                                //    bReturn = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.KEY_IN + sInPutData);
                                //    //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end
                                //}
                                #endregion 변경
                                //#20181102 상품 터치, 바코드 스캔시 동일 상품인 경우 수량 증가 안되는 증상 수정 end
                            }
                            #endregion

                            //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 start
                            #region 모바일쿠폰 해피기프트카드 자동인식 기능
                            //결제창에서만 동작 하도록 처리
                            if (pnlPayMainBack.Visible == true)
                            {
                                #region 모바일쿠폰 PREFIX 체크
                                //모바일쿠폰 prefix 체크
                                if (sInPutData.Length >= 6 && sInPutData != "")
                                {
                                    // PreFix 검색              
                                    DataTable dtVanInfo = m_cDataCommon.SeletPrefixToPayTypeInfo(sInPutData);
                                    if (dtVanInfo != null && dtVanInfo.Rows.Count > 0)
                                    {
                                        m_cPosStatus.Sale.strMobileCpnNo = sInPutData;
                                    }
                                }
                                #endregion 모바일쿠폰 PREFIX 체크

                                #region 해피기프트 prefix 체크
                                //해피기프트 prefix 체크
                                if (sInPutData.Length >= 6 && sInPutData != "")
                                {
                                    IPaymentUs m_cHappyGiftCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.HPGIFTCARD);
                                    string[] aRet = new string[10];
                                    string ret = m_cHappyGiftCard.SearchPayment(new string[] { PosConst.HPGIFTCARD_SEARCH_TYPE.PREFIX, sInPutData }, ref aRet);

                                    if (ret == UserCom.RST_OK)
                                    {
                                        //해피기프트(구)
                                        if (aRet[0].Trim() == "C" && aRet[2] == "98")
                                        {
                                            m_cPosStatus.Sale.strHappyGiftCardNo = sInPutData;
                                        }

                                        //해피기프트(신)
                                        if (aRet[0].Trim() == "N")
                                        {
                                            m_cPosStatus.Sale.strHappyGiftCardNo = sInPutData;
                                        }
                                    }

                                }
                                #endregion 해피기프트 prefix 체크

                                #region 모바일쿠폰인 경우 모바일결제(00073) 화면 표시
                                //모바일쿠폰인 경우 모바일결제(00073) 화면 표시
                                if (m_cPosStatus.Sale.strMobileCpnNo != "")
                                {
                                    PayComFuncion(PosKey.MENU_KEY.MOBILE_COUPON, "3");
                                }
                                #endregion 모바일쿠폰인 경우 모바일결제(00073) 화면 표시

                                #region 해피기프트인 경우 해피기프트(00291) 화면 표시
                                //해피기프트인 경우 해피기프트(00291) 화면 표시
                                if (m_cPosStatus.Sale.strHappyGiftCardNo != "")
                                {
                                    PayComFuncion(PosKey.MENU_KEY.HPGIFTCARD, "3");
                                }
                                #endregion 해피기프트인 경우 해피기프트(00291) 화면 표시
                            }
                            #endregion
                            //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 end

                            //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start
                            #region 해피오더 주문내역 바코드 리딩 시 자동 완료처리
                            if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT553), "0") == "1")
                            {
                                if (pnlPayMainBack.Visible != true)
                                {
                                    if (bReturn == false)
                                    {
                                        if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                                        {
                                            WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021);    // 판매 등록 중에 처리 할수 없는 기능 입니다.
                                            txtInPut.Text = "";
                                            //DisplayInit(true, false);
                                            return;
                                        }

                                        //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start - 20180829
                                        if (sInPutData.Length == 15 && sInPutData.StartsWith("999"))
                                        //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end - 20180829
                                        {
                                            WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "00", "C", sInPutData });
                                        }
                                    }
                                }
                            }
                            #endregion
                            //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end
                        }
                    }
                    else
                    {
                        // 수량합산 모드이면 수량 합산 처리(0:미합산, 1:최종상품합산, 2:상품별합산)
                        if (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2")
                        {
                            if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                            {
                                ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                                for (int i = 0; i < alTrPluItem.Count; i++)
                                {
                                    Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alTrPluItem[i];

                                    if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;
                                    if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL) continue;
                                    if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) continue;
                                    if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES) continue;

                                    if (cPluItem.SUB_SHOP_CD != m_cPosStatus.Base.SubShopNo || cPluItem.ITEM_BAR_CD != sInPutData) continue;

                                    if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SUM_DC_AMT > 0) continue;
                                    if (cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0) continue;
                                    if (cPluItem.SALE_QTY >= 99999) continue;
                                    //#20170825 오픈 상품은 무조건 새 row로 입력 start
                                    if (cPluItem.OPEN_ITEM_DIV == "1") continue;
                                    //#20170825 오픈 상품은 무조건 새 row로 입력 end

                                    // 수량 증가 처리
                                    m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", i.ToString(), "");

                                    SaleItemGrid.SelectIndexItem(i);
                                    m_cCustDisp.DisplaySaleItemList(true, true, i);

                                    txtInPut.Text = "";
                                    m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
                                    return;
                                }
                            }
                        }

                        // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                        m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", "", PosConst.SALE_PLU_INPUT_TYPE.KEY_IN + sInPutData);                        
                    }

                    //-------------end-----------------
                }
                else
                {
                    // 기능 항목 처리
                    m_cSaleMainProc.ExecuteSaleMainProcess(sFuncValue, sInPutData, sSelectRow, "");

                    //#Rhee, 20180209 미국 상품검색 후 상품 추가시 상품의 중분류로 이동 Start
                    if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS) && m_sPluItemCode != string.Empty)
                    {
                        // 메뉴 표시
                        btnMenuMClass_FuncClickHandler(btnMenuMClass, m_sPluItemCode);
                        m_sPluItemCode = string.Empty;
                    }
                    //#Rhee, 20180209 미국 상품검색 후 상품 추가시 상품의 중분류로 이동 End
                }
               
                txtInPut.Text = "";
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
            tmrSaleTimer.Enabled = true;
        }

        /// <summary>
        /// 그리드 헤더 거래 취소
        /// </summary>
        /// <param name="sender"></param>
        private void SaleItemGrid_GridHeaderClickEvent(object sender)
        {

            tmrSaleTimer.Enabled = false;

            try
            {
                if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.PAY_WAIT)
                {

                    //if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0261)) == true )
                    //{
                    // 기능 항목 처리(지정취소)
                    m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.TRADE_STOP, "", "", "");

                    ////// 거래 완료 후 초기화 처리
                    //DisplayInit(false, true);
                    ////// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
                    //DisplayItem(0, 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
            {
                tmrSaleTimer.Enabled = true;
            }

        }

        /// <summary>
        /// 그리드 상품 클릭(지정취소)
        /// </summary>
        /// <param name="sender"></param>
        private void SaleItemGrid_GridItemClickEvent(object sender, int nCellIndex)
        {
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
                txtInPut.Text = "";
                tmrSaleTimer.Enabled = false;

                // 그리드의 현재 선택 행번호
                int nSelectRow = SaleItemGrid.SelectedIndex;
                string sSelectRow = "";
                if (nSelectRow >= 0 && SaleItemGrid.GetItemCount() > 0)
                {
                    Hashtable htSaleItemGrid = SaleItemGrid.GridDataItems;          // 그리드 데이터
                    GridDataItem cGridDataItem = (GridDataItem)htSaleItemGrid[nSelectRow];
                    // No
                    CsmGridExRowData cGridExRowData = (CsmGridExRowData)cGridDataItem.GridItemData[0];
                    sSelectRow = cGridExRowData.GridItemValue;
                }
                if (sSelectRow == "") return;

                // 상품 등록내역 고객용 화면 표시
                m_cCustDisp.DisplaySaleItemSelect(nSelectRow);

                if (nCellIndex == 8)
                {
                    if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                        && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                    {
                        pnlSubMenu.Visible = false;
                        pnlSetMenu.Visible = false;
                    }
                    // 기능 항목 처리(지정취소)
                    m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.CANCEL_ITEM, "", sSelectRow, "");
                }
                else if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                        && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                {
                    // 상품 아이템 
                    ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                    Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelectRow)]; // 상품 정보

                    if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
                    {
                        pnlSubMenu.Visible = false;
                        pnlSetMenu.Visible = false;

                        if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL) LoadCommonSubMenuDisplay(cPluItem.SUB_SHOP_CD, cPluItem.M_CLSS);
                    }
                    else if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.OPT_MENU)
                    {
                        if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1") return;
                        if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) return;

                        for (int i = CmUtil.IntParse(sSelectRow); i >= 0; i--)
                        {
                            // 상품 정보
                            Column.TR_PLU.DATA cPluSubItem = (Column.TR_PLU.DATA)alPluItem[i];

                            if (cPluSubItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN) break;

                            if (cPluSubItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluSubItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)
                            {
                                if (cPluSubItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluSubItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) break;
                                if (cPluSubItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) break;

                                LoadSubMenuDisplay(cPluSubItem.SUB_SHOP_CD, cPluSubItem.M_CLSS);
                                break;
                            }
                        }
                    }
                    else if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)
                    {
                        if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1") return;
                        if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) return;
                        if (cPluItem.SET_PLU_SET_GROUP_CODE == "") return;

                        // 세트메뉴 그룹 상세 로딩
                        m_cSaleMainProc.m_dtSetMenuDetail = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_SET_GRP.TABLE_NAME_CHANGE, cPluItem.SUB_SHOP_CD, cPluItem.SET_PLU_SET_GROUP_CODE);

                        LoadSetMenuDisplay(cPluItem.SET_PLU_SET_GROUP_CODE, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0497));
                    }
                }

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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
            {
                tmrSaleTimer.Enabled = false;
            }
        }

        /// <summary>
        /// 판매화면 종료 처리
        /// </summary>
        public void SaleMainExit()
        {
            try
            {
                //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
                if (m_cPosStatus.Base.DmbIf == "1" &&
                    PosMstManager.GetPosOption(POS_OPTION.OPT554) == "1" &&
                    m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT &&
                    m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NORMAL)
                {
                    // 디지털메뉴보드 I/F
                    IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);

                    // 판매완료 
                    cDigitalMenuBoard.Execute(new string[] { ItemConst.DT_IRT_ID.SALE_END });
                }

                if (PosMstManager.GetPosOption(POS_OPTION.OPT103) == "3" &&
                    PosMstManager.GetPosOption(POS_OPTION.OPT554) == "1" &&
                    m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT &&
                    m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NORMAL)
                {
                    // 고객화면 상품정보 클리어
                    m_cCustDisp.ClearSaleItemList();

                }
                //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end

                tmrSaleTimer.Enabled = false;

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

        #region 상단 기타 업무 및 WEB 기능 호출
        /// <summary>
        /// 상단 기타 업무 및 WEB 기능 호출
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lblEtc_Click(object sender, EventArgs e)
        {

            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = "";    //화면보호기 대기시간 설정
                if ((UI.CsmLabel)sender == lblEtc)
                {
                    //ETC 메뉴
                    //WinSale.ExecuteBinessRun(PosKey.MENU_KEY.TOP_MENU_ETC);
                    if (pnlMenuSlide.Visible != true)
                    {
                        m_SlideMenuKey = "";
                        m_sPosMenuKeyIn = PosKey.MENU_KEY.TOP_MENU_ETC;
                        pnlMenuSlide.Visible = true;
                        MenuSlideList();
                        SlideInitControl();
                        pnlMenuSlide.BringToFront();
                    }
                    else
                    {
                        pnlMenuSlide.Visible = false;
                    }
                }
                else
                {
                    //WEB 메뉴
                    //WinSale.ExecuteBinessRun(PosKey.MENU_KEY.TOP_MENU_WEB);

                    if (pnlMenuSlide.Visible != true)
                    {
                        m_SlideMenuKey = "";
                        m_sPosMenuKeyIn = PosKey.MENU_KEY.TOP_MENU_WEB;
                        pnlMenuSlide.Visible = true;
                        MenuSlideList();
                        SlideInitControl();
                        pnlMenuSlide.BringToFront();
                    }
                    else
                    {
                        pnlMenuSlide.Visible = false;
                    }
                }

                txtInPut.Text = "";
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 웹 호출
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void picWeb_Click(object sender, EventArgs e)
        {
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = "";    //화면보호기 대기시간 설정

                if (pnlMenuSlide.Visible != true)
                {
                    m_sPosMenuKeyIn = PosKey.MENU_KEY.TOP_MENU_WEB;
                    pnlMenuSlide.Visible = true;
                    MenuSlideList();
                    SlideInitControl();
                    pnlMenuSlide.BringToFront();
                }
                else
                {
                    pnlMenuSlide.Visible = false;
                }


                txtInPut.Text = "";
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

            }
            catch (Exception ex)
            {

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


        /// <summary>
        /// 점주/알바 모드 클릭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdmin_Click(object sender, EventArgs e)
        {
            try
            {
                SetOwnPartDiv(true);
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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="bOwnPartDivChange"></param>
        private void SetOwnPartDiv(bool bOwnPartDivChange)
        {

            try
            {
                if (bOwnPartDivChange == true)
                {
                    if (m_cPosStatus.Base.OwnPartDiv == PosConst.OWN_PART_DIV.PART_DIV)
                    {
                        m_cPosStatus.Base.OwnPartDiv = PosConst.OWN_PART_DIV.OWN_DIV;
                    }
                    else
                    {
                        m_cPosStatus.Base.OwnPartDiv = PosConst.OWN_PART_DIV.PART_DIV;
                    }

                    //전송데이터 저장
                    m_cDataCommon.SaveServerRequestTransactionData(PosConst.RE_TRANSACTIONDATA.OWNER_MODE, new string[] { m_cPosStatus.Base.OwnPartDiv });
                }

                if (m_cPosStatus.Base.OwnPartDiv == PosConst.OWN_PART_DIV.PART_DIV)
                {
                    btnAdmin.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0033);
                }
                else
                {
                    m_cPosStatus.Base.OwnPartDiv = PosConst.OWN_PART_DIV.OWN_DIV;
                    btnAdmin.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0034);
                }
                ////전송데이터 저장
                //m_cDataCommon.SaveServerRequestTransactionData(PosConst.RE_TRANSACTIONDATA.OWNER_MODE, new string[] { m_cPosStatus.Base.OwnPartDiv });
            }
            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 tmrSaleTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                tmrSaleTimer.Enabled = false;
              
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                {
                    if (Form.ActiveForm == this)
                    {
                        // Add, 2017.02.15, 영수증프린터로 주방 주문서/메시지 출력 처리 
                        //m_cSaleMainProc.KtchOrderSheetToBillPrint();

                        // 화면보호기 처리
                        if (m_cCustDisp.ScreenSaverDisplay() == true)
                        {
                            //스크린세이버 기능(0: 사용안함. 1:사용함, 2:사용함(LOGOFF))
                            if (PosMstManager.GetPosOption(POS_OPTION.OPT013) == "2")
                            {
                                string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.SIMPLE_LOG_ON });
                                if (sRet == UserCom.RST_ERR)
                                {
                                    m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMQUIT;
                                    SaleMainExit();
                                    return;
                                }
                                lblCashier.Text = m_cPosStatus.Base.CashierName;
                            }
                        }
                        SetOwnPartDiv(false);

                        if (m_sMstBatchDownDate != m_cPosStatus.Base.MstBatchDownDate)
                        {
                            // 캠페인 마스터 로딩
                            m_sMstBatchDownDate = m_cPosStatus.Base.MstBatchDownDate;
                            m_cCampaingMain.LoadCampaignCondition(new string[] { });
                        } 

                        SelectBrPopUp();    // BR 팝업 업무 조회

                        //긴급공지 체크(10초마다)
                        if (CmUtil.IntParse(DateTime.Now.ToString("ss")) % 10 == 0)
                        {
                            GetTopMsgMode("1");
                            if (m_cPosStatus.Sale.SysShutDown != "") return;
                        }

                        // 해피오더 주문접수 알람

                        //#20170913 해피오더 알림 팝업 여부 옵션 처리 start
                        //기존
                        //if (m_cPosStatus.Sale.HappyOrderAlarm == true)
                        //변경
                        if ((m_cPosStatus.Sale.HappyOrderAlarm == true) && (PosMstManager.GetPosOption(POS_OPTION.OPT510) == "1"))
                        //#20170913 해피오더 알림 팝업 여부 옵션 처리 end
                        {
                            // 상품등록 대기 일 때만 해피오더 주문접수 알림창 강제 POP-UP
                            m_cPosStatus.Sale.HappyOrderAlarm = false;

                            //#20180615 해피오더 팝업 수정 start
                            //기존
                            //WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD_POPUP, "ALARM" });
                            //변경
                            WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01", "C" });
                            //#20180615 해피오더 팝업 수정 end
                        }

                        //기타 공지 1분마다
                        if (DateTime.Now.ToString("ss") == "00")
                        {
                            SelectEtcNoticeCom();
                            //if (m_cPosStatus.Sale.SysShutDown != "") return;
                        }

                        //#20180605 해피오더 개선 start
                        
                        //즉시주문, 예약주문 알림
                        if (PosMstManager.GetPosOption(POS_OPTION.OPT510) == "1")
                        {
                            // 즉시주문 30초 마다 표시
                            
                            //#20180605 해피오더 개선 start - 20180618
                            //기존
                            //if (m_nTimeSync_HpOrd_Direct >= 30)
                            //변경
                            if (m_nTimeSync_HpOrd_Direct >= 30 || m_cPosStatus.Sale.bPayCompleteYN == true)
                            //#20180605 해피오더 개선 end - 20180618
                            {
                                // Count 초기화
                                m_nTimeSync_HpOrd_Direct = 0;

                                //#20180605 해피오더 개선 start - 20180618
                                m_cPosStatus.Sale.bPayCompleteYN = false;
                                //#20180605 해피오더 개선 end - 20180618


                                //주문접수 건이 1건 이상인 경우
                                int DirectCnt = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDirectCnt, "0")) +
                                                int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderReservCnt, "0"));

                                //DirectCnt = 10; //TEST DELETE 
                                if (DirectCnt >= 1)
                                {
                                    //해피오더 리스트 팝업(Y:당일픽업, A:즉시주문, B:예약주문)
                                    WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01", "A" });

                                    //해피오더 리스트 팝업 종료 후 해피오더 주문건수 재조회 후 건수 갱신
                                    m_cSvr2Tran.HappyOrderCntChk();
                                }
                            }
                            else
                            {
                                m_nTimeSync_HpOrd_Direct++;
                            }

                            // 예약주문 30분 마다 표시
                            if (m_nTimeSync_HpOrd_Reserv >= 60 * 30)
                            {
                                // Count 초기화
                                m_nTimeSync_HpOrd_Reserv = 0;
                                //주문접수 건이 1건 이상인 경우
                                int ReservCnt = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0")) -
                                                int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDirectCnt, "0")) -
                                                int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderReservCnt, "0"));
                                if (ReservCnt >= 1)
                                {
                                    //해피오더 리스트 팝업(Y:당일픽업, A:즉시주문, B:예약주문)
                                    WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01", "B" });

                                    //해피오더 리스트 팝업 종료 후 해피오더 주문건수 재조회 후 건수 갱신
                                    m_cSvr2Tran.HappyOrderCntChk();
                                }
                            }
                            else
                            {
                                m_nTimeSync_HpOrd_Reserv++;
                            }

                        }
                         
                        //#20180605 해피오더 개선 end

                    }
                }

                // 서버 시간 동기화 05분 마다(2017.07.12)
                if (DateTime.Now.ToString("ss") == "00")
                {
                    m_nTimeSyncFlag++;
                    if (m_nTimeSyncFlag == 5)
                    {
                       string sRet = m_cSvr2Tran.ServerSysDateTime();
                       m_cPosStatus.Base.OlePosNetworkStatus = sRet;
                        m_nTimeSyncFlag = 0;
                    }
                }

                // 시간 표시
                //lblDateTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                lblCashier.Text = m_cPosStatus.Base.CashierName;
                lblTranNo.Text = m_cPosStatus.Base.TradeNo;

                // 해피오더 주문알림 처리
                if (PosMstManager.GetPosOption(POS_OPTION.OPT035) == "1")
                {
                    //// 해피오더 신규주문
                    //int iCnt01 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderRegCnt, "0"));
                    //// 해피오더 배달미처리
                    //int iCnt02 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt, "0"))
                    //           + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0"))
                    //           + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryingCnt, "0"));
                    //lblIFStatus1.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0459), iCnt01, iCnt02);
                    if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
                    {
                        // 해피오더 신규주문(일반주문건수 + 배달주문건수 + 예약주문건수)
                        int iCnt01 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0"));
                        if (iCnt01 > 99) iCnt01 = 99;
                        // 해피오더 픽업미처리
                        int iCnt02 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderProductReadyCnt, "0")) + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderPickupWaitCnt, "0"));
                        if (iCnt02 > 99) iCnt02 = 99;
                        // 해피오더 배달미처리
                        //#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 start
                        //기존
                        /*
                        int iCnt03 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt, "0"))
                                   + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0"))
                                   + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryingCnt, "0"));
                        */
                        //변경
                        int iCnt03 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRequestCnt, "0"))
                                   + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryRegCnt, "0"))
                                   
                                   //#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
                                   //기존
                                   //+ int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryingCnt, "0"))
                                   //#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end

                                   //#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 start
                                   + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryProductReadyCnt, "0"))
                                   //#20180910 배달의 상품준비가 픽업 건들으로 집계되는 현상 수정 end

                                   + int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryDirectCnt, "0"));
                        //#20180328 직접배달 처리 후 배달완료시 매출 생성 안되는 증상 수정 end

                        lblIFStatus1.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0459), iCnt01, iCnt02, iCnt03);
                    }
                    else
                    {
                        // 해피오더 일반
                        int iCnt01 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderRegCnt, "0"));
                        if (iCnt01 > 99) iCnt01 = 99;
                        // 해피오더 배달
                        int iCnt02 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderDeliveryOrderRegCnt, "0"));
                        if (iCnt02 > 99) iCnt02 = 99;
                        // 해피오더 예약
                        int iCnt03 = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderReservedRegCnt, "0"));
                        if (iCnt03 > 99) iCnt03 = 99;

                        lblIFStatus1.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1009), iCnt01, iCnt02, iCnt03);
                    }
                }

                // 빚은몰 주문알림 처리
                if (PosMstManager.GetPosOption(POS_OPTION.OPT036) == "1")
                {
                    lblIFStatus2.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0464), CmUtil.IntParse(m_cPosStatus.Sale.BizeunOrderCnt));
                }

                // 이지웰 주문알림 처리
                if (PosMstManager.GetPosOption(POS_OPTION.OPT037) == "1")
                {
                    lblIFStatus3.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0465), CmUtil.IntParse(m_cPosStatus.Sale.EzwelOrderCnt));
                }

                // 온도정보 갱신
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT039), "0") == "1")
                {
                    #region 온도정보 색상
                    // 우선 순위      : 미수신 > 알람 > 경고
                    //- 녹색(정상)   : 알람-N, 경고-N, 미수신-N
                    //- 회색(미수신) : 미수신-Y  미수신이 Y이면 알람, 경고는 체크 하지 않음
                    //- 적색(알람)   : 미수신-N, 알람-Y  알람이 Y이면 경고는 체크 하지 않음
                    //- 황색(경고)   : 미수신-N, 알람-N, 경고-Y
                    // [센서ID|온도계명|측정온도|알람YN|경고YN|미수신YN|최종수신시간]

                    lblTemperature01.Text = CmUtil.IsNull(m_cPosStatus.Temp.Temperature1, "-");
                    lblTemperature02.Text = CmUtil.IsNull(m_cPosStatus.Temp.Temperature2, "-");
                    lblTemperature03.Text = CmUtil.IsNull(m_cPosStatus.Temp.Temperature3, "-");

                    // 첫번째 온도 정보
                    if (m_cPosStatus.Temp.Alarm1 == "N" && m_cPosStatus.Temp.Warning1 == "N" && m_cPosStatus.Temp.receiveYN1 == "N")
                    {
                        // 녹색
                        lblTemperature01.BackColor = Color.Green;
                    }
                    else
                    {
                        if (m_cPosStatus.Temp.receiveYN1 == "Y" || CmUtil.IsNull(m_cPosStatus.Temp.Temperature1) == true)
                        {
                            // 회색
                            lblTemperature01.BackColor = Color.DarkGray;
                        }
                        else if (m_cPosStatus.Temp.receiveYN1 == "N")
                        {
                            if (m_cPosStatus.Temp.Alarm1 == "Y")
                            {
                                // 레드
                                lblTemperature01.BackColor = Color.Red;
                            }
                            else if (m_cPosStatus.Temp.Alarm1 == "N")
                            {
                                // 황색
                                lblTemperature01.BackColor = Color.DarkOrange;
                            }
                        }
                    }

                    // 두번째 온도 정보
                    if (m_cPosStatus.Temp.Alarm2 == "N" && m_cPosStatus.Temp.Warning2 == "N" && m_cPosStatus.Temp.receiveYN2 == "N")
                    {
                        // 녹색
                        lblTemperature02.BackColor = Color.Green;
                    }
                    else
                    {
                        if (m_cPosStatus.Temp.receiveYN2 == "Y" || CmUtil.IsNull(m_cPosStatus.Temp.Temperature2) == true)
                        {
                            // 회색
                            lblTemperature02.BackColor = Color.DarkGray;
                        }
                        else if (m_cPosStatus.Temp.receiveYN2 == "N")
                        {
                            if (m_cPosStatus.Temp.Alarm2 == "Y")
                            {
                                // 레드
                                lblTemperature02.BackColor = Color.Red;
                            }
                            else if (m_cPosStatus.Temp.Alarm2 == "N")
                            {
                                // 황색
                                lblTemperature02.BackColor = Color.DarkOrange;
                            }
                        }
                    }

                    // 세번째 온도 정보
                    if (m_cPosStatus.Temp.Alarm3 == "N" && m_cPosStatus.Temp.Warning3 == "N" && m_cPosStatus.Temp.receiveYN3 == "N")
                    {
                        // 녹색
                        lblTemperature03.BackColor = Color.Green;
                    }
                    else
                    {
                        if (m_cPosStatus.Temp.receiveYN3 == "Y" || CmUtil.IsNull(m_cPosStatus.Temp.Temperature3) == true)
                        {
                            // 회색
                            lblTemperature03.BackColor = Color.DarkGray;
                        }
                        else if (m_cPosStatus.Temp.receiveYN3 == "N")
                        {
                            if (m_cPosStatus.Temp.Alarm3 == "Y")
                            {
                                // 레드
                                lblTemperature03.BackColor = Color.Red;
                            }
                            else if (m_cPosStatus.Temp.Alarm3 == "N")
                            {
                                // 황색
                                lblTemperature03.BackColor = Color.DarkOrange;
                            }
                        }
                    }
                    #endregion 온도정보 색상
                }

                //기념일 배송
                if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT020), "0") != "0")
                {
                    if (lblAnniv.Tag.ToString().Equals("1"))
                    {
                        if (lblAnniv.BackColor == Color.FromArgb(34, 34, 34))
                        {
                            lblAnniv.BackColor = Color.Red;
                        }
                        else
                        {
                            lblAnniv.BackColor = Color.FromArgb(34, 34, 34);
                        }
                    }
                }



                // 주변장치 상태 표시
                lblDeviceState.ForeColor = m_cDataCommon.GS_DeviceStatus();

                //if (DateTime.Now.ToString("ss") == "10")
                //{
                    //네트워크 온오프 체크 
                    OnLinecheck();
                //}

                //if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                //    SelectBrPopUp();
            }
            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
            {
                if (m_cPosStatus.Sale.SysShutDown == "") tmrSaleTimer.Enabled = true;
            }
        }
        #endregion

        #region SelectBrPopUp(BR팝업 업무 조회)
        /// <summary>
        /// BR팝업 업무 조회
        /// </summary>
        private void SelectBrPopUp()
        {
            DataTable dt = null;

            try
            {
                if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR)
                {
                    dt = m_cDataCommon.GetBrPopUpBizMst();

                    if (dt == null || dt.Rows.Count == 0)
                    {
                        //처리 없음!
                    }
                    else
                    {
                        foreach (DataRow dr in dt.Rows)
                        {
                            string sRet = "";

                            if (dr["CMM_GRP_CD"].Equals(PosConst.COMMON_CODE_GROUP.Z0016))
                            {
                                //BR) 품질관리 집중시간
                                sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_POPUP_COM, PosConst.MSG_BOX_TYPE.CONFIRM, dr["SHOW_MSG1"].ToString(), dr["SHOW_MSG2"].ToString(), dr["SHOW_MSG3"].ToString(), "T", "0", "", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0128) });
                            }
                            else if (dr["CMM_GRP_CD"].Equals(PosConst.COMMON_CODE_GROUP.Z0015))
                            {
                                //TO-BE 처리 없음!

                            }
                            else if (dr["CMM_GRP_CD"].Equals(PosConst.COMMON_CODE_GROUP.Z0018))
                            {
                                //DD) 재고율정보 알림
                                sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_POPUP_COM, PosConst.MSG_BOX_TYPE.QUESTION, dr["SHOW_MSG1"].ToString(), dr["SHOW_MSG2"].ToString(), dr["SHOW_MSG3"].ToString(), "F", "0", "", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0131) });
                                if (sRet == UserCom.RST_OK)
                                {
                                    WinBasic.ShowForm(new string[] { FormManager.FORM_WEB_LINK, PosKey.MENU_KEY.PRODUCE_REG });
                                }
                            }
                            else if (dr["CMM_GRP_CD"].Equals(PosConst.COMMON_CODE_GROUP.Z0019))
                            {
                                //DD) 주말 행사정보 팝업
                                sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_POPUP_COM, PosConst.MSG_BOX_TYPE.QUESTION, dr["SHOW_MSG1"].ToString(), dr["SHOW_MSG2"].ToString(), dr["SHOW_MSG3"].ToString(), "F", "0", "", MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0392) });

                                if (sRet != UserCom.RST_OK)
                                {
                                    //주말 행사 정보 추후 WEB POS 확정되면 처리해야함!
                                    //WinBasic.ShowForm(new string[] { FormManager.FORM_WEB_LINK, "" });
                                }
                            }
                            m_cDataCommon.BrPopupUpdate(dr);
                        }

                        m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
                    }
                }
            }
            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>
        /// 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
            {
                switch (sDevice)
                {
                    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);
            }
        }

        /// <summary>
        /// 스캐너 이벤트 처리
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        private void OnScannerEvent(object source, EventArgs e)
        {
            try
            {
                string sScanCode = m_cDevStatus.Scanner.DataLabel;

                // 상품 등록 처리(EtcData=0:수입력, 1:메뉴, 2:스켄)
                m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, txtInPut.Text, "", PosConst.SALE_PLU_INPUT_TYPE.SCANNER + sScanCode);
            }
            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>
        private void EmgNoticeProcess()
        {

            DataTable dt = null;

            try
            {

                // 긴급 공지 설정
                if (lblTopMsgMode.MpStatus() == false)
                {
                    //내역 조회
                    dt = (DataTable)m_cPosNoticeCom.GetData(new string[] { PosMst.MST_EMG_NOTE.TABLE_NAME, ItemConst.NOTE_MSG_DIV.ROL, "", "" });

                    if (dt == null || dt.Rows.Count == 0)
                    {
                        //처리 없음!
                    }
                    else
                    {
                        foreach (DataRow dr in dt.Rows)
                        {                            
                            //변수 담기
                            Cosmos.UI.CsmPosMovePanel.MovePanelInfo cMoveInfo = new Cosmos.UI.CsmPosMovePanel.MovePanelInfo();

                            cMoveInfo.BackColor = Color.Red;
                            cMoveInfo.ForeColor = Color.Yellow;
                            cMoveInfo.MoveKind = "1";   //0:좌->우, 1:우->좌, 4:깜박임
                            cMoveInfo.MoveText = CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CONTENTS).Replace("\n", "");
                            cMoveInfo.ResvCode = string.Format("{0}^{1}^{2}^{3}", CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_TYPE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.POS_EXEC_TYPE));

                            lblTopMsgMode.MpAdd(cMoveInfo);

                            if (CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.READ_YN) == "0")
                            {
                                //DB 업데이트
                                UpdateNotice(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.START_DT), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), PosConst.MST_EMG_NOTE_READ_FLAG.FINSH);
                            }
                        }
                        lblTopMsgMode.MpIntervalMove(5);    //타이머 시간 설정: 최초 디폴트 10

                        if (m_cPosStatus.Sale.ScreenSizeUser == 800)
                            FormManager.SetControlSize(lblTopMsgMode, 95, 0, 705, 50, 21);
                        else
                            FormManager.SetControlSize(lblTopMsgMode, 125, 0, 898, 50, 21);
                        
                        //시작
                        lblTopMsgMode.Visible = true;
                        lblTopMsgMode.MpStart();
                    }
                }

                //팝업 공지 체크
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                {
                    dt = (DataTable)m_cPosNoticeCom.GetData(new string[] { PosMst.MST_EMG_NOTE.TABLE_NAME, ItemConst.NOTE_MSG_DIV.POP, "", "" });
                    if (dt == null || dt.Rows.Count == 0)
                    {
                        //처리 없음!
                    }
                    else
                    {

                        foreach (DataRow dr in dt.Rows)
                        {
                            string sRet = "";

                            //즉시 적용 체크
                            string sMsgType = CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_TYPE);

                            if (sMsgType == "1")   //1:마스터, 2:프로그램
                            {

                                //프로그램 이면 다운로드 완료 확인!
                                if (CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.DOWN_YN) == "1")    //다운로드 완료 확인
                                {
                                    sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_EMERGENCY_NOTICE, PosConst.MSG_BOX_TYPE.QUESTION, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0682), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CONTENTS) });

                                    if (sRet == UserCom.RST_OK)
                                    {
                                        //2.읽은 DB UPDATE
                                        UpdateNotice(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.START_DT), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), PosConst.MST_EMG_NOTE_READ_FLAG.FINSH);

                                        // 재기동!
                                        m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART;
                                        SaleMainExit();
                                        break;
                                    }
                                    else
                                    {
                                        UpdateNotice(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.START_DT), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), PosConst.MST_EMG_NOTE_READ_FLAG.SHOW);
                                    }
                                }
                            }
                            else
                            {

                                // 경과 시간 체크!
                                if (CmUtil.LongParse(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.FNSH_HOUR)) >= CmUtil.LongParse(DateTime.Now.ToString("yyyyMMddHHmmss")))
                                {


                                    ////마스터면....
                                    //if (sMsgType == "1")
                                    //{
                                    //    sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_EMERGENCY_NOTICE, PosConst.MSG_BOX_TYPE.QUESTION, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0682), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CONTENTS) });
                                    //    if (sRet == UserCom.RST_OK)
                                    //    {
                                    //        //2.읽은 DB UPDATE
                                    //        UpdateNotice(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.START_DT), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), PosConst.MST_EMG_NOTE_READ_FLAG.FINSH);

                                    //        // 재기동!
                                    //        m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART;
                                    //        SaleMainExit();
                                    //        break;
                                    //    }
                                    //    else
                                    //    {
                                    //        UpdateNotice(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.START_DT), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), PosConst.MST_EMG_NOTE_READ_FLAG.SHOW);
                                    //    }
                                    //}
                                    //else
                                    //{
                                        sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_EMERGENCY_NOTICE, PosConst.MSG_BOX_TYPE.CONFIRM, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0682), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CONTENTS) });

                                        //1-2.즉시 적용 않일때
                                        //WinManager.ConfirmMessage(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CONTENTS).Replace("\n", ""));
                                        //2.읽은 DB UPDATE
                                        UpdateNotice(CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.START_DT), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_CODE), CmUtil.GetDataRowStr(dr, PosMst.MST_EMG_NOTE.DATA.MSG_DIV), PosConst.MST_EMG_NOTE_READ_FLAG.FINSH);
                                    //}
                                }
                            }
                        }

                    }
                }

            }
            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="sMsgCd"></param>
        /// <param name="sMsgDiv"></param>
        private void UpdateNotice(string sStartDt, string sMsgCd, string sMsgDiv, string sReadFlag)
        {
            try
            {
                string sRet = m_cPosNoticeCom.Execute(new string[] { sStartDt, sMsgCd, sMsgDiv, sReadFlag });
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }


        /// <summary>
        /// 클릭 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sCode"></param>
        private void lblTopMsgMode_MpClickHandler(object sender, string sCode)
        {
            try
            {
                //현업 요청으로 클릭하면 안보이기!
                if (m_cPosStatus.Base.TrainingFlag != "1" && lblTopMsgMode.Visible == true)
                {
                    //연습모드가 아니고
                    lblTopMsgMode.Visible = false;
                    //lblTopMsgMode.MpStop();
                }

            }
            catch (Exception ex)
            {

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

        /// <summary>
        /// 클릭이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lblTopMsgMode_Click(object sender, EventArgs e)
        {
            lblTopMsgMode_MpClickHandler(null, null);
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        #endregion 긴급 공지사항 처리

        /// <summary>
        /// 판매,결제 모드 변경
        /// </summary>
        /// <param name="bSaleMode">true:판매모드, false:결제모드</param>
        /// <remarks>
        /// 결제모드 전환 시 lstPaymentsList.Visiable = false 처리 하여 
        /// 화면잔상을 제거, 결제 추가 시 lstPaymentsList.Visiable = ture 처리 한다.
        /// </remarks>
        public void ChangeSalePayMode(bool bSaleMode)
        {
            try
            {
                if (bSaleMode == true)
                {
                    // 결제화면 숨기기
                    pnlCardMot.Visible = false;
                    pnlPayMainBack.Visible = false;
                    //pnlPayMainBack.Top = 770;
                }
                else
                {
                    if (pnlAllianceCard.Visible == true) pnlAllianceCard.Visible = false;
                    //System.Threading.Thread.Sleep(100);

                    // 결제화면 화면 표시
                    pnlCardMot.Visible = false;
                    pnlPayMainBack.Visible = false;
                    pnlPayMainBack.Top = 50;

                    if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == false)  //상품권,선불카드 판매시 비활성화 안함!
                    {
                        pnlSetMenu.Visible = false;
                    }
                                        
                    pnlSubMenu.Visible = false;
                    pnlFlavour.Visible = false;

                    //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
                    //기존
                    //lstPaymentList.Visible = false;
                    //변경
                    lstPaymentList.Visible = true;
                    //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

                    cFuncPnts.SelectFuncButton("");
                    cFuncDcs.SelectFuncButton("");
                    cFuncPays.SelectFuncButton("");

                    //기타 기능 
                    SetPaySetpDisp(PosConst.MOT_MSG_TYPE.PAY_STEP_1);

                    //TTS 결제 금액 사용 유무
                    if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "1")
                    {
                        CmUtil.SpeakByTTSEngine(m_cPosStatus.Base.Country, string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0239), m_cTrnStatus.Sale.NetSaleAmt), 150);                        
                    }                    
                    //*** MoonSeokWoo 2017.11.20 Edit
                    else if(CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2")
                    {
                        SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PAY_MAIN_MENU, "");
                    }
                    //*** MoonSeokWoo 2017.11.20 End

                    DisplayPayment();

                    SetRichTbMotMsg(rtbMotMain, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PAY_MAIN_MENU, "");

                    //lblPayNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                    lblPayNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);

                    // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
                    DisplayItem(1, false);

                    pnlPayMainBack.Visible = true;
                    pnlPayMainBack.BringToFront();
                    pnlCardMot.Visible = 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);
            }
        }
        public void ChangeShowPayBtn(bool bShowPayBtn)
        {
            try
            {
                // 결제화면 (이전 및 결제취소 버튼 숨기기기 처리)
                if (bShowPayBtn == false)
                {
                    BtnPayMain.ForeColor = BtnPayMain.BackColor;
                    BtnPayCanc.ForeColor = BtnPayCanc.BackColor;
                }
                else
                {
                    BtnPayMain.ForeColor = Color.White;
                    BtnPayCanc.ForeColor = Color.White;
                }
            }
            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 PayListInit()
        {
            try
            {
                lstPaymentList.Columns.Clear();
                lstPaymentList.Columns.Add("PAY_NO", 0, HorizontalAlignment.Left);
                lstPaymentList.Columns.Add("PAY_NM", 160, HorizontalAlignment.Left);
                lstPaymentList.Columns.Add("PAY_AMT", 110, HorizontalAlignment.Right);
                lstPaymentList.FullRowSelect = true;
                lstPaymentList.Scrollable = true;

                // 캠페인 등록 리스트 표시
                lstCampaignList.Columns.Clear();
                lstCampaignList.Columns.Add("CAMPAIGN_NO", 0, HorizontalAlignment.Left);
                lstCampaignList.Columns.Add("CAMPAIGN_NM", 177, HorizontalAlignment.Left);
                lstCampaignList.FullRowSelect = 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>
        ///// TTS 음성 호출 
        ///// </summary>
        //private void TheradTTS()
        //{
        //    Thread t = new Thread(new ThreadStart(TTSForPayAmt));
        //    t.Start();
        //}

        ///// <summary>
        ///// 결제 금액 TTS 처리
        ///// </summary>
        //private void TTSForPayAmt()
        //{
        //    try
        //    {
        //        string stmp = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0239), m_cTrnStatus.Sale.NetSaleAmt);

        //        CmUtil.SpeakByTTSEngine(PosConst.TTS_VOICE_NAME.VOICE_ko_KR, stmp, 150);
        //    }
        //    catch (Exception ex)
        //    {
        //        UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
        //            System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
        //    }

        //}

        /// <summary>
        /// 포인트 카드 기능키
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void cFuncPnts_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {

                //if (m_cPosStatus.Sale.DutchPayFlg == "2")
                //{
                //    WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0286));
                //    return;
                //}


                //cFuncPnts.SelectFuncButton(sFuncCode);

                //LoadMotPayHdr(PosConst.MOT_MSG_TYPE.PAY_STEP_1);
                PayComFuncion(sFuncCode, PosConst.MOT_MSG_TYPE.PAY_STEP_1);
            }
            catch (Exception ex)
            {

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


        /// <summary>
        /// 제휴 할인 기능키
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void cFuncDcs_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {
                //if (m_cPosStatus.Sale.DutchPayFlg == "2")
                //{
                //    WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0286));
                //    return;
                //}

                //cFuncDcs.SelectFuncButton(sFuncCode);

                //LoadMotPayHdr(PosConst.MOT_MSG_TYPE.PAY_STEP_2);
                PayComFuncion(sFuncCode, PosConst.MOT_MSG_TYPE.PAY_STEP_2);
            }
            catch (Exception ex)
            {

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

        /// <summary>
        /// 결제 기능키
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sFuncCode"></param>
        private void cFuncPays_FuncClickHandler(object sender, string sFuncCode)
        {
            try
            {
                // -------------------------------------------------------------------------------------------
                // 세브란스 직원식 상품 체크
                // -------------------------------------------------------------------------------------------
                string sRet = UserCom.RST_ERR;
                sRet = m_cSaleMainProc.SeveranceiTemCheck(sFuncCode);
                if (sRet != UserCom.RST_OK) return;
                // -------------------------------------------------------------------------------------------

                //cFuncPays.SelectFuncButton(sFuncCode);

                //LoadMotPayHdr(PosConst.MOT_MSG_TYPE.PAY_STEP_3);
     

                PayComFuncion(sFuncCode, PosConst.MOT_MSG_TYPE.PAY_STEP_3);
            }
            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>
        /// 결제 MOT 버튼 클릭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnMotPay_Click(object sender, EventArgs e)
        {
            try
            {
                if (((UI.CsmButton)sender).Text == "") return;

                //결제화면 전환시 부모 패널 Visible 가 false 이기 때문에 1개인 경우 자동 클릭이 안되서 null 체크함!
                if (BtnMotPay02.Visible == false && e != null)  
                {
                    SetBtnMotPay();
                }
                else
                {

                    if (((UI.CsmButton)sender) == BtnMotPayUp)
                    {
                        if (iNowPage == 1) return;
                        iNowPage -= 1;
                        SetBtnMotPay();
                    }
                    else if (((UI.CsmButton)sender) == BtnMotPayDown)
                    {
                        if (iNowPage == iMaxPage) return;
                        iNowPage += 1;
                        SetBtnMotPay();
                    }
                    else
                    {
                        string sTmp;

                        BtnMotPay01.Text = ((UI.CsmButton)sender).Text;
                        BtnMotPay01.Tag = ((UI.CsmButton)sender).Tag;


                        sTmp = BtnMotPay01.Tag.ToString();


                        string[] aParam = sTmp.Split(new string[] { "^" }, StringSplitOptions.None);

                        string sCnntId = aParam[0];
                        string sMsgFlg = aParam[1];
                        string sSeqNo = aParam[2];
                        string sImgPath = aParam[3];

                        picMotPayImg.Image = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, sImgPath.Trim());

                        SetRichTbMotMsg(rtbMotPayTxt, sCnntId, sMsgFlg, sSeqNo);

                        BtnMotPay02.Visible = false;
                        BtnMotPay03.Visible = false;
                        BtnMotPay04.Visible = false;
                        BtnMotPay05.Visible = false;


                        BtnMotPayUp.Enabled = true;
                        BtnMotPayDown.Enabled = true;
                    }
                }

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 리치텍스트 박스 포커스 방지
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rtbMotDtl_Enter(object sender, EventArgs e)
        {
            try
            {

                if (sender is UI.CsmPosRichTextBox) DisplayInit(true, false);
                this.txtInPut.Focus();

            }
            catch { }
        }

        /// <summary>
        /// 종료키
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cBtnMain_Click(object sender, EventArgs e)
        {
            try
            {
                if ((m_cTrnStatus.Sale.RemainPayAmt == 0 && PosMstManager.GetPosOption(POS_OPTION.OPT322) == "1")
                    || (m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING))    
                {
                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    // 결제 완료 처리 
                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    BtnPayMain.Text = "";
                    BtnPayCanc.ForeColor = BtnPayCanc.BackColor;
                    
                    // 거래 완료 처리
                    m_cSaleMainProc.ExecuteSaleComplete();

                    // 판매대기 == 결제 완료 ==> 판매화면 판매대기 상태로 전환
                    if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                    {
                        ChangeSalePayMode(true);

                        BtnPayMain.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0045);
                        BtnPayMain.BackColor = Color.FromArgb(74, 97, 118);
                    }
                    else
                    {
                        BtnPayMain.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0135);
                    }
                    BtnPayCanc.ForeColor = Color.White;
                }
                else
                {
                    

                    //1.포인트 조회 체크
                    ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
                    foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
                    {
                        if (cEtcItem.CANCEL_DIV == ItemConst.PAY_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.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)
                            || (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE))
                        {
                            //해피 포인트가 조회되어 있어 판매등록으로 갈 수 없습니다. 등록된 해피포인트를 취소하세요.
                            WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0275));
                            return;
                        }
                    }


                    //결제 수단 등록 체크  --> 추후엔 취소 처리까지 고려~
                    //2.결제 체크
                    ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
                    foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
                    {

                        if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE)
                        {
                            if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.NORMAL && !(cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.RESERVATION_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.RESERVATION.RESERVATION_PAY))
                            {
                                //결제가 등록되어 있어 판매등록으로 갈 수 없습니다. 등록된 결제를 취소 하세요.
                                WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0276));
                                return;
                            }
                        }
                        else
                        {
                            if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.NORMAL)
                            {
                                //결제가 등록되어 있어 판매등록으로 갈 수 없습니다. 등록된 결제를 취소 하세요.
                                WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0276));
                                return;
                            }
                        }
                    }

                    bool bReservationCancel = false;

                    if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE)
                    {
                        if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0641)) == false)
                        {
                            return;
                        }
                        else
                        {
                            bReservationCancel = true;
                        }
                    }


                    // 판매모드 변경
                    //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
                    if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.TABLE_GROUP_PAY)
                    {
                        m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT;
                    }
                    else
                    {
                        m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
                    }

                    // 사은품 캠페인 취소 처리
                    ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                    cCampaignMain.CancelCampaignPayment("", PosConst.SALE_PLU_INPUT_TYPE.FREEGIFT); //사은품 캠페인 등록 취소
                    cCampaignMain.ExecuteCampaignPluHappyPoint("", false, "", "", "", "");          // 상품 캠페인 계산


                    if (m_cPosStatus.Sale.DutchPayFlg == "1")
                    {

                        //더치 페이 상품이면 아이템 원복!
                        ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);

                        for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
                        {
                            Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];

                            if (cSaleItem.DUTCH_PAY_CAN_DIV == "0" || cSaleItem.DUTCH_PAY_MAIN_CAN_DIV == "0")
                            {
                                cSaleItem.CANCEL_DIV = cSaleItem.DUTCH_PAY_CAN_DIV;
                                cSaleItem.CANCEL_DIV_MAIN = cSaleItem.DUTCH_PAY_MAIN_CAN_DIV;
                                cSaleItem.DUTCH_PAY_CAN_DIV = "";
                                cSaleItem.DUTCH_PAY_MAIN_CAN_DIV = "";
                                cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_TOTQTY;
                                cSaleItem.DUTCH_PAY_TOTQTY = 0;
                            }
                        }

                        m_cPluService.ItemAmountExeccute(true, true);

                        DisplayInit(true, true);
                    }


                    if (bReservationCancel == true)
                    {
                        m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.STOP;

                        // 보류 후 거래 중지라면 로그 남기기!
                        if (m_cTrnStatus.Head.HoldStat != "")
                            m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.CANCEL;

                        // 테이블 거래 완료 처리
                        string sRet = m_cTableSvr.CompleteSaleOrder();

                        ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);

                        // 거래 완료 처리
                        sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
                        if (sRet != UserCom.RST_OK) return;

                        // 판매상태 변경
                        m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;

                        //// 거래 완료 후 초기화 처리
                        DisplayInit(true, true);
                        //// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
                        DisplayItem(0, true);

                        ChangeSalePayMode(true);

                        if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
                        {
                            SaleMainExit();
                            return;
                        }
                    }
                    else
                    {
                        // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
                        DisplayItem(1, false);

                        ChangeSalePayMode(true);
                    }
                    
                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    // 메인(상품등록 화면 이동)
                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    if (m_cPosStatus.Sale.PayingDutchFlag == "1")
                    {

                        m_cSaleMainProc.DutchPay("", "1");
                        //WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0284));
                        //return;
                    }
                    else
                    {
                        //더치페이 관련 함수들 초기화!
                        m_cPosStatus.Sale.DutchPayFlg = "";
                        m_cTrnStatus.Head.AmtDutchPayYn = "";
                        m_cPosStatus.Sale.PayingDutchFlag = "";
                    }
                    
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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 lblStep1_Click(object sender, EventArgs e)
        {
            SetPaySetpDisp(PosConst.MOT_MSG_TYPE.PAY_STEP_1);
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        private void lblStep2_Click(object sender, EventArgs e)
        {
            SetPaySetpDisp(PosConst.MOT_MSG_TYPE.PAY_STEP_2);
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        private void lblStep3_Click(object sender, EventArgs e)
        {
            SetPaySetpDisp(PosConst.MOT_MSG_TYPE.PAY_STEP_3);
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        #region 기능키 컨트롤 초기화 및 기능키 마스터 로딩
        /// <summary>
        /// 기능키 컨트롤 초기화 및 기능키 마스터 로딩
        /// </summary>
        /// <returns>성공/실패</returns>
        public bool LoadFuncMasterPayment()
        {
            try
            {
                int iPntCnt = 0;
                int iDcCnt = 0;
                int iPayCnt = 0;

                cFuncPnts.VisibleUpDown = false;
                cFuncPnts.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                cFuncDcs.VisibleUpDown = false;
                cFuncDcs.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                cFuncPays.VisibleUpDown = false;
                cFuncPays.ClearFuncButtonInfo();                    // 설정된 메뉴정보 초기화

                // 선택 컬러 지정!
                Color clrTheme = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor);

                cFuncPnts.SelectedBackColor = clrTheme;
                cFuncPnts.SelectedForeColor = Color.WhiteSmoke;
                cFuncPnts.BackColor = Color.FromArgb(159, 159, 159);
                cFuncPnts.BorderColor = Color.FromArgb(159, 159, 159);
                cFuncPnts.BorderLineSize = 1;
                cFuncDcs.SelectedBackColor = clrTheme;
                cFuncDcs.SelectedForeColor = Color.WhiteSmoke;
                cFuncDcs.BackColor = Color.FromArgb(159, 159, 159);
                cFuncDcs.BorderColor = Color.FromArgb(159, 159, 159);
                cFuncDcs.BorderLineSize = 1;
                cFuncPays.SelectedBackColor = clrTheme;
                cFuncPays.SelectedForeColor = Color.WhiteSmoke;
                cFuncPays.BackColor = Color.FromArgb(159, 159, 159);
                cFuncPays.BorderColor = Color.FromArgb(159, 159, 159);
                cFuncPays.BorderLineSize = 1;

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                // 판매기본 기능키 로딩
                DataTable dtFuncKey = m_cDataCommon.SeletFuncKeyGroup("");
                #region 해피포인트 및 제휴카드 선리딩 처리 가능 여부 확인을 위한 전역테이블 변수에 저장한다.
                gdtFuncKey = dtFuncKey;
                #endregion
                if (dtFuncKey == null || dtFuncKey.Rows.Count <= 0)
                {
                    // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0000); // 기능키 그룹 마스터가 없습니다
                    return false;
                }

                foreach (DataRow dr in dtFuncKey.Rows)
                {
                    Cosmos.UI.CsmFunc.FuncBtnInfo cFuncInfo = new Cosmos.UI.CsmFunc.FuncBtnInfo();

                    cFuncInfo.sGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_GRP_ID);          // 분류코드
                    cFuncInfo.nSeqNo = CmUtil.GetDataRowInt(dr, PosMst.MST_FUNC_KEY_GRP.DATA.DISP_SEQ);                 // 표시순번
                    cFuncInfo.sFuncCode = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID);               // 기능코드
                    cFuncInfo.sFuncText = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_NM).Replace("\n", PosConst.CRLF).Replace("\\n", PosConst.CRLF);               // 기능 명

                    cFuncInfo.cBackColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_BTN_COLOR));  // 백 컬러
                    cFuncInfo.cForeColor = Color.Black; //Color.White;                                                                 // 명 컬러
                    cFuncInfo.fFontSize = CmUtil.GetDataRowFloat(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FONT_SIZE);           // 명 폰트 사이즈
                    cFuncInfo.nButtonSize = CmUtil.GetDataRowInt(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_BTN_SIZE);       // 버튼 사이즈(0:일반,1:가로확대,2:세로확대,3:가로세로확대)

                    if (cFuncInfo.sGroupCode == PosKey.MENU_KEY.PAY_POINT_MENU)
                    {
                        cFuncInfo.nSeqNo = iPntCnt + 1;
                        cFuncPnts.AddFuncButtonInfo(cFuncInfo);
                        iPntCnt += 1;
                        iPntCnt += (cFuncInfo.nButtonSize == 1 || cFuncInfo.nButtonSize == 3)  ? 1 : ((cFuncInfo.nButtonSize > 3) ? cFuncInfo.nButtonSize - 2 : 0);
                    }
                    else if (cFuncInfo.sGroupCode == PosKey.MENU_KEY.PAY_DC_MENU)
                    {
                        cFuncInfo.nSeqNo = iDcCnt + 1;
                        cFuncDcs.AddFuncButtonInfo(cFuncInfo);
                        iDcCnt += 1;
                        iDcCnt += (cFuncInfo.nButtonSize == 1 || cFuncInfo.nButtonSize == 3) ? 1 : ((cFuncInfo.nButtonSize > 3) ? cFuncInfo.nButtonSize - 2 : 0);
                    }
                    else if (cFuncInfo.sGroupCode == PosKey.MENU_KEY.PAY_PAY_MENU)
                    {
                        cFuncInfo.nSeqNo = iPayCnt + 1;
                        cFuncPays.AddFuncButtonInfo(cFuncInfo);
                        iPayCnt += 1;
                        iPayCnt += (cFuncInfo.nButtonSize == 1 || cFuncInfo.nButtonSize == 3) ? 1 : ((cFuncInfo.nButtonSize > 3) ? cFuncInfo.nButtonSize - 2 : 0);
                    }
                }

                // 포인트
                cFuncPnts.SetFuncButtonCount(1, iPntCnt);                 // 버튼갯수 설정
                cFuncPnts.DisplayFuncButton(PosKey.MENU_KEY.PAY_POINT_MENU);                // 기능 버튼 표시
                // 할인
                cFuncDcs.SetFuncButtonCount(1, iDcCnt);                 // 버튼갯수 설정
                cFuncDcs.DisplayFuncButton(PosKey.MENU_KEY.PAY_DC_MENU);                // 기능 버튼 표시  
                // 결제
                cFuncPays.SetFuncButtonCount(1, iPayCnt);                 // 버튼갯수 설정
                cFuncPays.DisplayFuncButton(PosKey.MENU_KEY.PAY_PAY_MENU);                // 기능 버튼 표시
                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 기능키 컨트롤 초기화 및 기능키 마스터 로딩


        /// <summary>
        /// 결제 바로가기 처리
        /// </summary>
        /// <param name="sFuncCode"></param>
        /// <param name="iStep"></param>
        private void PayComFuncion(string sFuncCode, string sStep)
        {
            try
            {
                if ((m_cTrnStatus.Sale.RemainPayAmt == 0 && PosMstManager.GetPosOption(POS_OPTION.OPT322) == "1") ||
                    (m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING))
                {
                    //#20171227 인천공항 포스연동 start, phj - #20180313
                    //0원 상품등록 하고 결제완료 시점에 대기번호 화면 오픈 -> 인천공항포스에서 일괄취소 -> 자사포스 기능키 또는 결제완료 버튼 누를 때
                    //대기번호화면을 닫으면 모드가 PosConst.SALE_FLOW.PAY_DOING 변경되어 아래 팝업이 뜨므로 
                    //인천공항 포스로 상품,결제 재전송 할 수 없기 때문없다.
                    //인천공항 기능키 누를 때는 팝업 뜨지 않도록 수정!

                    //기존 
                    //WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0569);
                    //return;

                    //변경
                    if (sFuncCode != PosKey.MENU_KEY.INCHEON_AIRPORT)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0569);
                        return;
                    }
                    //#20171227 인천공항 포스연동 end, phj - #20180313
                }

                BtnPayMain.ForeColor = BtnPayMain.BackColor;
                BtnPayCanc.ForeColor = BtnPayCanc.BackColor;
                tmrSaleTimer.Enabled = false;

                //키유효성 체크
                if (m_cDataCommon.FunctionKeyValidity(sFuncCode) == false)
                {
                    WinManager.ConfirmMessage("(" + sFuncCode + ") " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
                    return;
                }

                m_cPosStatus.Sale.SaleMainPayStep = sStep;

                //#15606 제휴서비스 결제 프로세스 개선 start
                //기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
                //기존
                //SetPaySetpDisp(sStep);
                //변경
                SetPaySetpDisp(sStep, sFuncCode);
                //#15606 제휴서비스 결제 프로세스 개선 end

                SetRichTbMotMsg(rtbMotMain, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, sFuncCode, "");
                
                //this.rtbMotMain.Visible = false;
                m_cSaleMainProc.PayMainProc(sFuncCode, "");
                //this.rtbMotMain.Visible = true;

                //#15606 제휴서비스 결제 프로세스 개선 start
                //선택된 STEP MOT 표시
                SetPaySetpDisp(sStep);
                //#15606 제휴서비스 결제 프로세스 개선 end

                //#20170828 해피포인트 적립 제외 버튼 추가 phj, start
                //if (m_cTrnStatus.Head.HP_EXCLUDE_YN == "1") cFuncPnts.SelectDispButton(PosKey.MENU_KEY.HAPPY_SAVE_EXCLUDE, 0);
                //#20170828 해피포인트 적립 제외 버튼 추가 phj, end

                SetRichTbMotMsg(rtbMotMain, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PAY_MAIN_MENU, "");

                //판매대기 == 결제 완료 ==> 판매화면 상품등록 대기 상태로 전환
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) ChangeSalePayMode(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
            {
                BtnPayMain.ForeColor = Color.White;
                BtnPayCanc.ForeColor = Color.White;
                tmrSaleTimer.Enabled = true;

                CmUtil.IgnoreMouseClick(this);  // 마우스 클릭 무시
            }

        }

        /// <summary>
        /// 상단 MOT 호출 처리
        /// </summary>
        /// <param name="sFuncCode"></param>
        public void SetTopMot(string sFuncCode)
        {
            try
            {
                SetRichTbMotMsg(rtbMotMain, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, sFuncCode, "");
            }
            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="sStep"></param>
        //#15606 제휴서비스 결제 프로세스 개선 start
        //기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
        //기존
        //private void SetPaySetpDisp(string sStep)
        //변경
        private void SetPaySetpDisp(string sStep, string sPosMenuKey = "")
        //#15606 제휴서비스 결제 프로세스 개선 end
        {
            try
            {
                Color cBasic = Color.FromArgb(51, 51, 51);
                Color cSelect = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor);  //Color.FromArgb(31, 180, 236);
                Color cNormalBox = Color.FromArgb(159, 159, 159);

                //#15606 제휴서비스 결제 프로세스 개선 start
                //기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
                //기존
                //LoadMotPayHdr(sStep);
                //변경
                LoadMotPayHdr(sStep, sPosMenuKey);
                //#15606 제휴서비스 결제 프로세스 개선 end

                for (int i = 1; i < 4; i++)
                {
                    Panel pnl = null;


                    if (i == 1)
                    {
                        if (sStep == i.ToString())
                        {
                            
                            lblPayStep1.ForeColor = cSelect;
                            pnlStep1.BackColor = cSelect;
                        }
                        else
                        {
                            lblPayStep1.ForeColor = cBasic;
                            pnlStep1.BackColor = cNormalBox;
                        }
                        pnl = pnlStep1;

                    }
                    else if (i == 2)
                    {
                        if (sStep == i.ToString())
                        {
                            lblPayStep2.ForeColor = cSelect;
                            pnlStep2.BackColor = cSelect;
                        }
                        else
                        {
                            lblPayStep2.ForeColor = cBasic;
                            pnlStep2.BackColor = cNormalBox;
                        }
                        pnl = pnlStep2;
                    }
                    else
                    {
                        if (sStep == i.ToString())
                        {
                            lblPayStep3.ForeColor = cSelect;
                            pnlStep3.BackColor = cSelect;
                        }
                        else
                        {
                            lblPayStep3.ForeColor = cBasic;
                            pnlStep3.BackColor = cNormalBox;
                        }
                        pnl = pnlStep3;
                    }

                    //foreach (Control control in pnl.Controls)
                    //{
                    //    if (control is UI.CsmLabel)
                    //    {
                    //        if (sStep == i.ToString())
                    //        {
                    //            control.BackColor = Color.BlueViolet;
                    //            control.ForeColor = Color.White;
                    //        }
                    //        else
                    //        {
                    //            control.BackColor = Color.White;
                    //            control.ForeColor = Color.Black;
                    //        }
                    //    }
                    //}
                }

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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>
        /// 결제 MOT 헤더 로드
        /// </summary>
        /// <param name="iStep"></param>
        //#15606 제휴서비스 결제 프로세스 개선 start
        //기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
        //기존
        //private void LoadMotPayHdr(string sStep)
        //변경
        private void LoadMotPayHdr(string sStep, string sPosMenuKey)
        //#15606 제휴서비스 결제 프로세스 개선 end
        {
            //헤더 로드

            m_alMotDtl.Clear();

            int iPage = 1;
            int iSeq = 1;

            SetMotPayInit();

            //#15606 제휴서비스 결제 프로세스 개선 start
            //기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
            //기존
            //DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG.TABLE_NAME, sStep, "", "");
            //변경
            DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG.TABLE_NAME, sStep, sPosMenuKey, "");
            //#15606 제휴서비스 결제 프로세스 개선 end
            if (dt == null || dt.Rows.Count <= 0)
            {
                //SetMotPayInit();
                return;
            }


            //배열 담기
            foreach (DataRow dr in dt.Rows)
            {

                if (iSeq == 6)
                {
                    iPage += 1;
                    iSeq = 1;
                }

                // 페이지 번호, 버튼명, 명, 태그 값
                m_alMotDtl.Add(new string[] { iPage.ToString(), string.Format("{0}{1:00}",MotbtnName,iSeq), CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.MOT_NM),
                      string.Format("{0}^{1}^{2}^{3}",CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.MSG_TYPE),CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.CNNT_ID)
                                                     ,CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SEQ_NO),CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.IMG_NM))
                });

                iSeq += 1;

            }

            // 보여주기
            iNowPage = 1;
            iMaxPage = iPage;

            SetBtnMotPay();

            if (dt.Rows.Count == 1)
                BtnMotPay_Click(BtnMotPay01, null);

        }


        /// <summary>
        /// 결제 MOT 버튼 셋팅
        /// </summary>
        /// <returns></returns>
        public bool SetBtnMotPay()
        {
            try
            {
                SetMotPayInit();

                if (m_alMotDtl == null || iMaxPage == 0)
                {
                    return false;
                }

                int iStrtNum = 1;

                foreach (string[] atmp in m_alMotDtl)
                {

                    if (atmp[0] == iNowPage.ToString())
                    {
                        Cosmos.UI.CsmButton btnCtl = (Cosmos.UI.CsmButton)pnlCardMot.Controls[atmp[1]];

                        if (btnCtl != null)
                        {

                            btnCtl.Text = atmp[2];
                            btnCtl.Tag = atmp[3];
                        }
                    }
                    iStrtNum += 1;
                }

                if (iNowPage == 1)
                {
                    BtnMotPayUp.Enabled = false;
                }
                else
                {
                    BtnMotPayUp.Enabled = true;
                }

                if (iMaxPage == iNowPage)
                {
                    BtnMotPayDown.Enabled = false;
                }
                else
                {
                    BtnMotPayDown.Enabled = 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;
            }


        }


        /// <summary>
        /// 리치박스 MOT 텍스트 설정
        /// </summary>
        /// <returns></returns>
        public bool SetRichTbMotMsg(RichTextBox Richtb, string sMsgTp, string sMsgFlag, string sSeqNo)
        {
            try
            {

                Richtb.Text = "";

                DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG_DTL.TABLE_NAME, sMsgTp, sMsgFlag, sSeqNo);
                if (dt == null || dt.Rows.Count <= 0)
                {
                    return false;
                }

                int iStrtNum = 0;

                foreach (DataRow dr in dt.Rows)
                {

                    string tmpStr = string.Empty;

                    tmpStr = CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.MSG);

                    //Richtb.AppendText(tmpStr.Trim());
                    //Richtb.Select(iStrtNum, tmpStr.Trim().Length);

                    Richtb.AppendText(tmpStr);
                    Richtb.Select(iStrtNum, tmpStr.Length);

                    Richtb.SelectionColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_COLOR));  // 백 컬러

                    int iFontSize = CmUtil.GetDataRowInt(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_SIZE);

                    if (iFontSize <= 0)
                        iFontSize = 1;

                    Richtb.SelectionFont = new Font(m_cPosStatus.Base.FONT, iFontSize);

                    if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.NEW_LINE_YN) == "1")
                    {
                        Richtb.AppendText("\n");
                        iStrtNum += 1;
                    }

                    //iStrtNum += tmpStr.Trim().Length; // +1;
                    iStrtNum += tmpStr.Length; // +1;
                }

                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>
        /// 코스모스 리치박스 MOT 텍스트 설정
        /// </summary>
        /// <returns></returns>
        public bool SetCmsRichTbMotMsg(UI.CsmPosRichTextBox Richtb, string sMsgTp, string sMsgFlag, string sSeqNo)
        {
            try
            {

                Richtb.Text = "";

                DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG_DTL.TABLE_NAME, sMsgTp, sMsgFlag, sSeqNo);
                if (dt == null || dt.Rows.Count <= 0)
                {
                    return false;
                }

                int iStrtNum = 0;

                foreach (DataRow dr in dt.Rows)
                {

                    string tmpStr = string.Empty;

                    tmpStr = CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.MSG);

                    //Richtb.AppendText(tmpStr.Trim());
                    //Richtb.Select(iStrtNum, tmpStr.Trim().Length);
                    Richtb.AppendText(tmpStr);
                    Richtb.Select(iStrtNum, tmpStr.Length);
                    Richtb.SelectionColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_COLOR));  // 백 컬러


                    int iFontSize = CmUtil.GetDataRowInt(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_SIZE);
                    if (iFontSize <= 0)
                        iFontSize = 1;

                    Richtb.SelectionFont = new Font(m_cPosStatus.Base.FONT, iFontSize);

                    //Richtb.SelectionFont = new Font(m_cPosStatus.Base.FONT, CmUtil.GetDataRowInt(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_SIZE));

                    if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.NEW_LINE_YN) == "1")
                    {
                        Richtb.AppendText("\n");
                        iStrtNum += 1;
                    }

                    //iStrtNum += tmpStr.Trim().Length; // +1;
                    iStrtNum += tmpStr.Length; // +1;

                }

                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>
        /// 라벨 mot 텍스트 설정
        /// </summary>
        /// <returns></returns>
        public bool SetLabelMotMsg(Label txtControl, string sMsgTp, string sMsgFlag)
        {
            try
            {
                txtControl.Text = "";

                DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG_DTL.TABLE_NAME, sMsgTp, sMsgFlag, "");
                if (dt == null || dt.Rows.Count <= 0)
                {
                    return false;
                }

                foreach (DataRow dr in dt.Rows)
                {

                    string tmpStr = string.Empty;

                    tmpStr = CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.MSG);

                    txtControl.Text += tmpStr;

                    if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.NEW_LINE_YN) == "1")
                    {
                        txtControl.Text += "\n";
                    }

                }

                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>
        /// 결제 MOT 초기화
        /// </summary>
        private void SetMotPayInit()
        {
            try
            {
                foreach (Control control in pnlCardMot.Controls)
                {
                    if (control is UI.CsmButton)
                    {

                        if (control.Text != "∧" && control.Text != " ∨")
                        {
                            control.Text = "";
                            control.Tag = "";
                            control.Visible = true;
                        }
                    }

                }

                rtbMotPayTxt.Text = "";
                picMotPayImg.Image = null;

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

            }

        }


        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;
            }
        }


        /// <summary>
        /// 결제등록 정보 화면 표시
        /// </summary>
        public void DisplayPayment()
        {
            try
            {
                cFuncPnts.SelectFuncButton("");
                cFuncDcs.SelectFuncButton("");
                cFuncPays.SelectFuncButton("");

                lstPaymentList.Items.Clear();

                // 결제 내역 받아 오기
                ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);

                for (int iRow = 0; iRow < aPayItem.Count; iRow++)
                {
                    Column.TR_PAYMENT.DATA cItem = (Column.TR_PAYMENT.DATA)aPayItem[iRow];
                    // 결제내역 리스트 표시

                    // 취소내역 표시 제외
                    if (cItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;

                    //if (cItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue;


                    ListViewItem lvData = new ListViewItem(iRow.ToString());

                    lvData.SubItems.Add(cItem.OCCUR_ENTRY_20);

                    //// 결제수단 화면표시 여부
                    //if (cItem.PAY_DTL_CD_05 == PosConst.PAY_DC_TYPE.PAY)
                    //{
                    //    //lvData.SubItems.Add(m_cPosStatus.Global.NumericTOCurrency(cItem.PAY_AMT));
                    //    lvData.SubItems.Add(m_cPosStatus.Global.NumericTOCurrency(cItem.AMT_ENTRY_01));
                    //}
                    lvData.SubItems.Add(m_cPosStatus.Global.NumericTOCurrency(cItem.AMT_ENTRY_01) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName);

                    lstPaymentList.Items.Add(lvData);

                    // 결제 기능버튼 선택 처리
                    string sMenuKey = m_cDataCommon.GetPayCdToMenuKey(cItem.PAY_WAY_CD, cItem.PAY_DTL_CD_01);
                    if (sMenuKey != "")
                    {
                        cFuncPnts.SelectDispButton(sMenuKey, 0);
                        cFuncDcs.SelectDispButton(sMenuKey, 0);
                        cFuncPays.SelectDispButton(sMenuKey, 0);

                        // 제휴카드(통합) 할인 처리(2017.08.29) -- START
                        if (sMenuKey == PosKey.MENU_KEY.SKT || sMenuKey == PosKey.MENU_KEY.KT || sMenuKey == PosKey.MENU_KEY.LGT
                            //#20180413 웰컴카드 신규기능 추가 start,phj
                            || sMenuKey == PosKey.MENU_KEY.WELCOMECARD_DC
                            //#20180413 웰컴카드 신규기능 추가 end,phj
                            || sMenuKey == PosKey.MENU_KEY.OLIBANK || sMenuKey == PosKey.MENU_KEY.BLUE_MEMBERS || sMenuKey == PosKey.MENU_KEY.RED_MEMBERS)
                        {
                            cFuncPnts.SelectDispButton(PosKey.MENU_KEY.MOBILE_UNITY, 0);
                            cFuncDcs.SelectDispButton(PosKey.MENU_KEY.MOBILE_UNITY, 0);
                            cFuncPays.SelectDispButton(PosKey.MENU_KEY.MOBILE_UNITY, 0);
                        }
                        // 제휴카드(통합) 할인 처리(2017.08.29) -- END
                    }
                }
                if (lstPaymentList.Items.Count > 0)
                {
                    lstPaymentList.Visible = true;
                    lstPaymentList.Items[lstPaymentList.Items.Count - 1].EnsureVisible();
                }

                // 해피포인트 등록 내역

                //#20181015 결제창 엑박 관련 이미지 미사용 처리 start
                //기존
                //lblHappyPoint.Visible = false;
                //변경
                lblHappyPoint.Visible = true;
                lblHappyPoint.Text = "";
                //#20181015 결제창 엑박 관련 이미지 미사용 처리 end

                ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
                foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
                {
                    if (cEtcItem.CANCEL_DIV == ItemConst.PAY_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.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
                    {
                        //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 start, phj
                        /*
                        //*****************************************************************************
                        //5%기본대상금액계산 
                        //*****************************************************************************
                        // 해피포인트 기본적립 대상 금액 획득
                        m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
                        // 캠페인(해피포인트 적립) 설정 처리
                        ICampaignUs CampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                        CampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
                        // 적립예정포인트
                        cEtcItem.ETC_AMT = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0);
                        if (m_cTrnStatus.Head.AftSaveAddInfo != "")
                        {
                            if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0;
                        }
                        */
                        //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 end, phj

                        //if (cEtcItem.HP_CUST_NAME.Length > 2)
                        //    lblHappyPoint.Text = "        [  " + cEtcItem.HP_CUST_NAME.Substring(0, 1) + "*" + cEtcItem.HP_CUST_NAME.Substring(2) + "  ]" + "\n\r";
                        //else


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

                        lblHappyPoint.Text = "         [  " + cEtcItem.HP_CUST_NAME + "  ]" + "\n\r";

                        lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0228) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_03) + "\n\r";       // 누적포인트
                        lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0229) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_04) + "\n\r";       // 가용포인트
                        if (cEtcItem.HP_EXT_POINT > 0)
                            lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0164) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.HP_EXT_POINT) + "\n\r";   // 소멸예정
                        

                        //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 start, phj
                        //기존
                        lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0098) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_08) + "\n\r";       // 대상금액
                        //변경  
                        /*
                        if (m_cTrnStatus.Head.AftSaveAddInfo != "")
                        {
                            double dAddSavePnt = 0;
                            dAddSavePnt = m_cDataService.DoubleParse(m_cTrnStatus.Head.AftSaveAddInfo.Substring(10, 15)); //추가적립대상금액
                            dAddSavePnt = cEtcItem.AMT_ENTRY_08 + dAddSavePnt; //기본적립금액 + 추가적립대상금액
                            lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0098) + ": " + m_cPosStatus.Global.NumericTOCurrency(dAddSavePnt) + "\n\r";       // 대상금액                           
                        }
                        else
                        {
                            lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0098) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_08) + "\n\r";       // 대상금액
                        }
                        */
                        //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 end, phj

                        // 적립예정포인트에 추가적립예정포인트도 합산하여 표시(2017.06.19)
                        double nAddSavePnt = 0;
                        if (m_cTrnStatus.Head.AftSaveAddInfo != "")
                        {
                            nAddSavePnt = m_cDataService.DoubleParse(m_cTrnStatus.Head.AftSaveAddInfo.Substring(28, 7));
                            //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 start, phj
                            //cEtcItem.ETC_AMT = nAddSavePnt;
                            //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 end, phj
                        }


                        //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 start, phj
                        //기존
                        //1000원 미만일 경우 적립예정 포인트 미표시(2017.09.08)
                        if (cEtcItem.AMT_ENTRY_08 >= 1000)
                        //변경
                        //if (cEtcItem.AMT_ENTRY_08 >= 1000 || cEtcItem.AMT_ENTRY_08 == 0)
                        //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 end, phj
                        {
                            lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0613) + ": " + m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(cEtcItem.ETC_AMT, nAddSavePnt)) + "\n\r";            // 적립예정
                        }

                        //lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0613) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.ETC_AMT) + "\n\r";            // 적립예정
                        lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0013) + ": " +
                                              (cEtcItem.HP_PASSWORD_YN == "Y" ? MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0629) : MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0861)) + "\n\r";                             // 비밀번호
                        lblHappyPoint.Visible = true;

                        // 결제 기능버튼 선택 처리
                        string sMenuKey = m_cDataCommon.GetPayCdToMenuKey(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01);
                        if (sMenuKey != "") cFuncPnts.SelectDispButton(sMenuKey, 0);

                        break;
                    }
                    else if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
                    {
                        string sName = cEtcItem.OCCUR_ENTRY_20.Trim();
                        lblHappyPoint.Text = " [ " + sName + " ]" + "\n\r";
                        //lblHappyPoint.Text = "   [  OKCASHBACK  ]" + "\n\r";
                        lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0228) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_03) + "\n\r";       // 누적포인트
                        lblHappyPoint.Text += MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0229) + ": " + m_cPosStatus.Global.NumericTOCurrency(cEtcItem.AMT_ENTRY_04) + "\n\r";       // 가용포인트
                        lblHappyPoint.Visible = true;

                        // 결제 기능버튼 선택 처리
                        string sMenuKey = m_cDataCommon.GetPayCdToMenuKey(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01);
                        if (sMenuKey != "") cFuncPnts.SelectDispButton(sMenuKey, 0);

                        break;
                    }
                }

                //#20170828 해피포인트 적립 제외 버튼 추가 phj, start
                if (m_cTrnStatus.Head.HP_EXCLUDE_YN == "1")
                {
                    // 해피포인트 적립제외를 선택 시 해당 컴포넌트 선택 상태로 변경
                    cFuncPnts.SelectDispButton(PosKey.MENU_KEY.HAPPY_SAVE_EXCLUDE, 0);
                }
                //#20170828 해피포인트 적립 제외 버튼 추가 phj, end

                if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
                {
                    // 총수량, 총매출액
                    txtPayQtySaleAmt.Text = m_cPosStatus.Global.NumericToQuantity(m_cTrnStatus.Head.TotQty) + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0998) + "  " 
                            + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1)) 
                            + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    // 총 할인 금액
                    txtPayDiscountAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotDcAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;

                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        txtPayVatSvc.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Head.SvcFeeAmt, m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED ? m_cTrnStatus.Head.SvcFeeVat : 0))
                             + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName + "/ "
                             + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotVatAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    }

                    if (m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.ChangeCashAmt > 0)
                    {
                        //결제 거스름
                        lblPayNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212);
                        //결제 받은 금액
                        txtPayRecvAmt.Text = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Sale.RecvedPayAmt, m_cPosStatus.Sale.ChangeCashAmt)) 
                            + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                        //결제 거스름 금액
                        txtPayNetSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cPosStatus.Sale.ChangeCashAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    }
                    else
                    {
                        lblPayNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0037);
                        //받은금액 표시
                        txtPayRecvAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RecvedPayAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1))
                             + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                        // 순매출액 표시 처리
                        txtPayNetSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1))
                             + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName;
                    }
                }
                else
                {
                    // 총수량, 총매출액
                    txtPayQtySaleAmt.Text = m_cPosStatus.Global.NumericToQuantity(m_cTrnStatus.Head.TotQty) + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0998) + "  " +
                            m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                            m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotSaleAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));
                    // 총 할인 금액
                    //txtPayDiscountAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                    //        m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotDcAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? -1 : 1));
                    txtPayDiscountAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotDcAmt);

                    if (m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED)
                    {
                        txtPayVatSvc.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Head.SvcFeeAmt, m_cPosStatus.Mst.TaxAmtIncludeYn == ItemConst.TAX_AMT_INCLUDE_YN.NOT_INCLUDED ? m_cTrnStatus.Head.SvcFeeVat : 0)) + "/ " +
                            m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.TotVatAmt);
                    }

                    if (m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.ChangeCashAmt > 0)
                    {
                        //결제 거스름
                        //lblPayNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212);
                        lblPayNetSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212);
                        //결제 받은 금액
                        txtPayRecvAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleAdd(m_cTrnStatus.Sale.RecvedPayAmt, m_cPosStatus.Sale.ChangeCashAmt));
                        //결제 거스름 금액
                        txtPayNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol + m_cPosStatus.Global.NumericTOCurrency(m_cPosStatus.Sale.ChangeCashAmt);
                    }
                    else
                    {
                        //받은금액 표시
                        txtPayRecvAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                                m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RecvedPayAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));
                        // 순매출액 표시 처리
                        txtPayNetSaleAmt.Text = m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol +
                                m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt * (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL ? 1 : -1));
                    }
                }

                if ((m_cTrnStatus.Sale.RemainPayAmt == 0 && PosMstManager.GetPosOption(POS_OPTION.OPT322) == "1")
                    || (m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING))   
                {
                    BtnPayMain.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0135);
                    BtnPayMain.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor);
                    if (BtnPayMain.ForeColor != Color.White) BtnPayMain.ForeColor = BtnPayMain.BackColor;
                }
                else
                {
                    BtnPayMain.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0045);
                    BtnPayMain.BackColor = Color.FromArgb(74, 97, 118);
                }
                m_cCustDisp.DisplaySaleItemList(false, true, 0);       // 고객화면 표시

                // 캠페인 적용 내역 표시
                lstCampaignList.Items.Clear();
                ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
                ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                foreach (Column.TR_PLU.DATA cPluItem in alPluItem)
                {
                    if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1") continue;

                    //string sCampaingName = "";
                    if (cPluItem.CPI_DC_AMT > 0 && cPluItem.alTrSaleCpi != null)
                    {
                        foreach (Column.TR_SALE_CPI_RSLT.DATA cTrPluCpi in cPluItem.alTrSaleCpi)
                        {
                            if (cTrPluCpi.DC_SUM_AMT > 0)
                            {
                                string sCampaingName = cCampaingMain.GetCampaignName(cTrPluCpi.CPI_CD, 0);
                                if (sCampaingName == "") continue;

                                bool bExistCampaign = false;
                                for (int i = 0; i < lstCampaignList.Items.Count; i++)
                                {
                                    if (sCampaingName == lstCampaignList.Items[i].SubItems[1].Text)
                                    {
                                        bExistCampaign = true;
                                        break;
                                    }
                                }
                                if (bExistCampaign == false)
                                {
                                    ListViewItem lvData = new ListViewItem(lstCampaignList.Items.Count.ToString());
                                    lvData.SubItems.Add(sCampaingName);
                                    //lvData.SubItems.Add(m_cPosStatus.Global.NumericTOCurrency(0));
                                    lstCampaignList.Items.Add(lvData);
                                }
                            }
                        }
                    }
                }
                if ( lstCampaignList.Items.Count > 0)
                {
                    lblCampaignList.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0400);
                    lblCampaignList.Visible = true;
                    lstCampaignList.Visible = true;
                }
                else
                {
                    lblCampaignList.Visible = false;
                    lstCampaignList.Visible = false;
                }

                //#16577 결제창 내부 봉투 추가 기능 도입 start
                if (PosMstManager.GetPosOption(POS_OPTION.OPT555) == "1")
                {
                    //캠페인 정보 미표시
                    lblCampaignList.Visible = false;
                    lstCampaignList.Visible = false;
                    PnlAddBag.Visible = true;
                }
                else
                {
                    PnlAddBag.Visible = false;
                }
                //#16577 결제창 내부 봉투 추가 기능 도입 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);
            }
        }

        /// <summary>
        /// 결제 취소
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnCanc_Click(object sender, EventArgs e)
        {
            string sRet;
            string sCardInfo = "", sPassWord = "";

            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

                ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
                ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);

                //#Rhee, 20180221 미주 상품 결제취소시 메인화면으로 가기 추가 Start
                if(m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS))
                {
                    m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT;
                }
                //#Rhee, 20180221 미주 상품 결제취소시 메인화면으로 가기 추가 End

                int iListIndex = 0;
                if (lstPaymentList.Items.Count > 0)
                {
                    #region  
                    //  미선택 null 예외처리 
                    if (lstPaymentList.FocusedItem == null) lstPaymentList.Items[lstPaymentList.Items.Count - 1].Focused = true;

                    iListIndex = lstPaymentList.FocusedItem.Index;
                    int iRow = CmUtil.IntParse(lstPaymentList.Items[iListIndex].SubItems[0].Text);

                    Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];

                    if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) return;

                    if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.CPI_PAY_ITEM)
                    {
                        WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0622);
                        return;
                    }

                    // SKT할인 인 경우, T페이 통합결제 여부 확인 후 T페이 통합결제 ITEM으로 취소 처리 
                    if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT
                        && string.IsNullOrWhiteSpace(cPayItem.OCCUR_ENTRY_15) == false)
                    {
                        #region
                        string[] aRet = new string[1];
                        IPaymentUs cTPayService = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.TPAY);
                        sRet = cTPayService.SearchPayment(new string[] { PosConst.TPAY_SEARCH_TYPE.TPAY_ITEM, cPayItem.OCCUR_ENTRY_15 }, ref aRet);
                        if (sRet == UserCom.RST_OK)
                        {
                            iRow = CmUtil.IntParse(aRet[0]);
                            cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];
                        }
                        #endregion
                    }

                    //Cat단말기 승인이면 처리! 또는 X-CHARGE
                    if (cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.CAT_TERMINAL || cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.X_CHARGE)
                    {
                        sRet = m_cPayCancel.CancelPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.PAY_DTL_CD_01, iRow.ToString(), "" });
                    }
                    //#20171018, 해피기프트(코나머니) 결제코드(신용->선불) 변경 Start, srlee
                    //else if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.CREDITCARD_ITEM && cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.NORMAL)
                    else if (((cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.CREDITCARD_ITEM) 
                        || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PPCARD_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PPCARD.HPGIFT_CARD))
                        && cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.NORMAL)
                    //#20171018, 해피기프트(코나머니) 결제코드(신용->선불) 변경 End, srlee
                    {
                        #region
                        // 카드 입력 받기!
                        sCardInfo = m_cPayCancel.SetPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.OCCUR_ENTRY_01, cPayItem.PAY_AMT.ToString(), cPayItem.OCCUR_ENTRY_20, cPayItem.OCCUR_ENTRY_05, cPayItem.PAY_DTL_CD_01, "N" });
                        if (sCardInfo == "") return;

                        sPassWord = sCardInfo.Substring(0, 20).Trim();
                        sCardInfo = sCardInfo.Substring(20);
                        if (CmUtil.MidH(sCardInfo, 0, 2) == "00")
                        {
                            cPayItem.CanFiller1 = sCardInfo;

                            sRet = m_cPayCancel.CancelPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.PAY_DTL_CD_01, iRow.ToString(), sCardInfo });
                        }
                        #endregion
                    }
                    else
                    {
                        #region
                        if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.T_PAY)
                        {
                            #region
                            // 카드 입력 받기!
                            sCardInfo = m_cPayCancel.SetPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.OCCUR_ENTRY_01, cPayItem.PAY_AMT.ToString(), cPayItem.OCCUR_ENTRY_20, cPayItem.OCCUR_ENTRY_05, cPayItem.PAY_DTL_CD_01, "Y" });
                            if (sCardInfo == "") return;

                            sPassWord = sCardInfo.Substring(0, 20).Trim();
                            sCardInfo = sCardInfo.Substring(20);
                            // T페이 
                            cPayItem.CanFiller2 = sPassWord;            // 비밀번호 
                            cPayItem.OCCUR_ENTRY_05 = sCardInfo.Substring(0, 1);        // 입력구분 
                            cPayItem.CanFiller1 = sCardInfo.Substring(1);               // 카드번호 
                            #endregion
                        }
                        // 제휴카드번호 저장 후 직전취소시 사용(2017.08.28) -- START
                        else if ((cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.SMILE_PAY)                   // 스마일페이
                            || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.T_PAY)                       // T페이
                            || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT)    // 캐시백
                            || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.SAMSUNG_POINT)       // 삼성포인트
                            || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PPCARD_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PPCARD.HP_GIFT)               // 해피기프트
                            //|| (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SPC_PAY) 
                            //|| (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SPC)
                            )
                        {
                            #region
                            // OLD
                        //else if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT        // 제휴할인(통신사,제휴카드)
                        //    || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.SMILE_PAY)                   // 스마일페이
                        //    || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PAY_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAY.T_PAY)                       // T페이
                        //    || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.OKCASHBACK_POINT)    // 캐시백
                        //    || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.SAMSUNG_POINT)       // 삼성포인트
                        //    || (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.PPCARD_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PPCARD.HP_GIFT)               // 해피기프트
                        //    //|| (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SPC_PAY) 
                        //    //|| (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SPC)
                        //    )   
                        //{
                            // 제휴카드번호 저장 후 직전취소시 사용(2017.08.28) -- END

                            
                            // 카드 입력 받기!
                            sCardInfo = m_cPayCancel.SetPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.OCCUR_ENTRY_01, cPayItem.PAY_AMT.ToString(), cPayItem.OCCUR_ENTRY_20, cPayItem.OCCUR_ENTRY_05, cPayItem.PAY_DTL_CD_01, "N" });
                            if (sCardInfo == "") return;

                            sPassWord = sCardInfo.Substring(0, 20).Trim();
                            sCardInfo = sCardInfo.Substring(20);

                            cPayItem.OCCUR_ENTRY_05 = sCardInfo.Substring(0, 1);
                            cPayItem.CanFiller1 = sCardInfo.Substring(1);
                            #endregion
                        }

                        sRet = m_cPayCancel.CancelPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.PAY_DTL_CD_01, iRow.ToString() });

                        //=============================================
                        // (2017.11.01) 해피포인트 제휴할인 선리딩 처리
                        //=============================================
                        #region (2017.11.01) 해피포인트 제휴할인 선리딩 처리
                        if (m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "")
                        {
                            if (cPayItem.PAY_WAY_CD == "03")
                            {
                                m_cPosStatus.Sale.strMobileUnityCardNo = "";
                                if (m_cPosStatus.Sale.strPriorReading_Title[0] == "SKT" || m_cPosStatus.Sale.strPriorReading_Title[0] == "KT" ||
                                    //#20180413 웰컴카드 신규기능 추가 start,phj
                                    m_cPosStatus.Sale.strPriorReading_Title[0] == "MC" ||
                                    //#20180413 웰컴카드 신규기능 추가 end,phj
                                    m_cPosStatus.Sale.strPriorReading_Title[0] == "LGT")
                                {
                                    if (m_cPosStatus.Sale.strPriorReading_Title[1] != "")
                                    {
                                        m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strPriorReading_Title[1];
                                        m_cPosStatus.Sale.strPriorReading_Title[1] = "";
                                    }
                                    else
                                    {
                                        m_cPosStatus.Sale.strPriorReading_Title[0] = "";
                                    }
                                }
                                else
                                {
                                    m_cPosStatus.Sale.strPriorReading_Title[1] = "";
                                }
                            }
                        }
                        #endregion

                        #endregion
                    }
                    #endregion
                }
                else  
                {

                    for (int iRow = 0; iRow < alEtcItem.Count; iRow++)
                    {
                        #region
                        Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)alEtcItem[iRow];
                        if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;

                        if (cEtcItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.CAT_TERMINAL)
                        {
                            sRet = m_cPayCancel.CancelPayment(new string[] { cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, iRow.ToString(), "" });
                        }
                        else 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.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)
                            || (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE))
                        {
                            // 제휴카드번호 저장 후 직전취소시 사용(2017.08.28) -- START
                            //if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
                            //{
                            //    // 카드 입력 받기!
                            //    sCardInfo = m_cPayCancel.SetPayment(new string[] { cEtcItem.ETC_WAY_CD, cEtcItem.OCCUR_ENTRY_01, cEtcItem.ETC_AMT.ToString(), cEtcItem.OCCUR_ENTRY_20, cEtcItem.OCCUR_ENTRY_05, cEtcItem.ETC_DTL_CD_01, "N" });
                            //    if (sCardInfo == "") return;

                            //    sPassWord = sCardInfo.Substring(0, 20).Trim();
                            //    sCardInfo = sCardInfo.Substring(20);

                            //    cEtcItem.OCCUR_ENTRY_05 = sCardInfo.Substring(0, 1);
                            //    cEtcItem.CanFiller1 = sCardInfo.Substring(1);
                            //}
                            // 제휴카드번호 저장 후 직전취소시 사용(2017.08.28) -- END
                            sRet = m_cPayCancel.CancelPayment(new string[] { cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, iRow.ToString() });

                            //=============================================
                            // (2017.11.01) 해피포인트 제휴할인 선리딩 처리
                            //=============================================
                            #region (2017.11.01) 해피포인트 제휴할인 선리딩 처리
                            if (m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "")
                            {
                                if (cEtcItem.ETC_WAY_CD == "80")
                                {
                                    m_cPosStatus.Sale.strHappyPointCardNo = "";

                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
                                    m_cPosStatus.Sale.strEmpInfo = "";
                                    //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end

                                    if (m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC")
                                    {
                                        m_cPosStatus.Sale.strPriorReading_Title[0] = "";
                                    }
                                    if (m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC")
                                    {
                                        m_cPosStatus.Sale.strPriorReading_Title[1] = "";
                                    }
                                }
                            }
                            #endregion
                        }
                        #endregion
                    }
                }

                DisplayItem(0, false);
                DisplayPayment();

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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 sCardInfo);
                //////////////////////////////////////////////////////////////////////////////////
            }
        }


        private void lblHappyPoint_Click(object sender, EventArgs e)
        {
            string sRet;
            string sCardInfo = "", sPassWord = "";

            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = "";    //화면보호기 대기시간 설정

                ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);

                for (int iRow = 0; iRow < alEtcItem.Count; iRow++)
                {
                    Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)alEtcItem[iRow];
                    if (cEtcItem.CANCEL_DIV == ItemConst.PAY_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.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)
                        || (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE))
                    {
                        if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0406)) == true)
                        {
                            if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
                            {
                                if (cEtcItem.OCCUR_ENTRY_08 != ItemConst.PAY_APP_DIV.CAT_TERMINAL)
                                {
                                    // 카드 입력 받기!
                                    sCardInfo = m_cPayCancel.SetPayment(new string[] { cEtcItem.ETC_WAY_CD, cEtcItem.OCCUR_ENTRY_01, cEtcItem.ETC_AMT.ToString(), cEtcItem.OCCUR_ENTRY_20, cEtcItem.OCCUR_ENTRY_05, cEtcItem.ETC_DTL_CD_01, "N" });
                                    if (sCardInfo == "") return;

                                    sPassWord = sCardInfo.Substring(0, 20).Trim();
                                    sCardInfo = sCardInfo.Substring(20);

                                    cEtcItem.OCCUR_ENTRY_05 = sCardInfo.Substring(0, 1);
                                    cEtcItem.CanFiller1 = sCardInfo.Substring(1);
                                }
                            }
                            sRet = m_cPayCancel.CancelPayment(new string[] { cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, iRow.ToString() });

                            DisplayItem(0, false);
                            DisplayPayment();
                        }
                    }
                }

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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 sCardInfo);
                //////////////////////////////////////////////////////////////////////////////////
            }
        }
        /// <summary>
        /// 결제 수단 반품 처리
        /// </summary>
        /// <param name="iRow"></param>
        /// <returns></returns>
        public string ReturnPay(int iRow)
        {
            string sPassWord = "";
            string sRet = UserCom.RST_ERR;

            try
            {
                ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);

                Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];

                if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) return sRet;

                if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.CREDITCARD_ITEM)
                {
                    if (cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.NORMAL)
                    {
                        // 카드 입력 받기!
                        string sCardInfo = m_cPayCancel.SetPayment(new string[] { cPayItem.PAY_WAY_CD, cPayItem.OCCUR_ENTRY_01, cPayItem.PAY_AMT.ToString(), cPayItem.OCCUR_ENTRY_20, cPayItem.OCCUR_ENTRY_05, cPayItem.PAY_DTL_CD_01, "N" });
                        if (sCardInfo == "") return sRet;

                        sPassWord = sCardInfo.Substring(0, 20).Trim();
                        sCardInfo = sCardInfo.Substring(20);
                        if (CmUtil.MidH(sCardInfo, 0, 2) == "00")
                        {
                            cPayItem.CanFiller1 = sCardInfo;
                            sRet = m_cPayCancel.RefundPayment(new string[] { iRow.ToString(), sCardInfo });
                        }
                    }
                    else
                    {
                        sRet = m_cPayCancel.RefundPayment(new string[] { iRow.ToString() });
                    }
                }
                else
                {
                    sRet = m_cPayCancel.RefundPayment(new string[] { iRow.ToString() });
                }

            }
            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 sRet;

        }
        ///// <summary>
        ///// 결제 취소
        ///// </summary>
        ///// <param name="sender"></param>
        ///// <param name="e"></param>
        //private void BtnCanc_Click(object sender, EventArgs e)
        //{
        //    string sRet;
        //    try
        //    {
        //        m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정

        //        int iListIndex = 0;

        //        if (lstPaymentList.Items.Count > 0)
        //        {
        //            //  미선택 null 예외처리 
        //            if (lstPaymentList.FocusedItem == null) lstPaymentList.Items[lstPaymentList.Items.Count - 1].Focused = true;

        //            iListIndex = lstPaymentList.FocusedItem.Index;
        //            int iRow = CmUtil.IntParse(lstPaymentList.Items[iListIndex].SubItems[0].Text);

        //            ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);

        //            Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];

        //            if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) return;

        //            // 결제 수단 취소
        //            //m_cPayCanCom.CancelPayment(new string[] { clPayItem.PAY_WAY_CD, clPayItem.PAY_DTL_CD_01, iRow.ToString() });


        //            switch (cPayItem.PAY_WAY_CD)
        //            {

        //                case ItemConst.TR_ITEM_ID.CREDITCARD_ITEM:
        //                    {

        //                        IPaymentUs m_cPayCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CREDITCARD);

        //                        if (cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.NORMAL)
        //                        {
        //                            //카드 입력 받기!

        //                            string sCardInfo = WinPay.ShowForm(new string[] { FormManager.FORM_INPUT_CARD, "", cPayItem.OCCUR_ENTRY_01, cPayItem.PAY_AMT.ToString(), cPayItem.OCCUR_ENTRY_20 });

        //                            if(CmUtil.MidH(sCardInfo,0,2) == "00")
        //                            {
        //                                sRet = m_cPayCard.CancelPayment(new string[] { iRow.ToString(), sCardInfo });
        //                            }

        //                        }
        //                        else
        //                        {
        //                            sRet = m_cPayCard.CancelPayment(new string[] { iRow.ToString() });
        //                        }

        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.MOBILE_COM_POINT: //제휴 통신사 할인 취소
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KTF || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_LGT)
        //                        {
        //                            IPaymentUs cMobileComPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTMOBILECOM);
        //                            sRet = cMobileComPoint.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else
        //                        {
        //                            IPaymentUs cMemberPointUse = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTMEMBERUSE);

        //                            sRet = cMemberPointUse.CancelPayment(new string[] { iRow.ToString() });
        //                        }

        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.CASH_ITEM:
        //                    {

        //                        IPaymentUs m_cPayCash = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CASH);

        //                        sRet = m_cPayCash.CancelPayment(new string[] { iRow.ToString() });
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.COUPON_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.COUPON.INCARD)
        //                        {
        //                            IPaymentUs cMobileComPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYCOUPON);
        //                            sRet = cMobileComPoint.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else
        //                        {
        //                            IPaymentUs m_cCouponDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.COUPONDC);

        //                            sRet = m_cCouponDC.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.MOBILECON_ITEM:
        //                    {
        //                        IPaymentUs m_cMobileCoupon= (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.MOBILECOUPON);

        //                        sRet = m_cMobileCoupon.CancelPayment(new string[] { iRow.ToString() });
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.EMP_DC_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SEVERANCE)
        //                        {
        //                            IPaymentUs m_cSeveranceDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SEVERANCEDC);

        //                            sRet = m_cSeveranceDC.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SPC)
        //                        {
        //                            IPaymentUs m_cSPCEmployeeDC= (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SPCEMPLOYEEDC);

        //                            sRet = m_cSPCEmployeeDC.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SAMSUNGCARD)
        //                        {
        //                            WinManager.ConfirmMessage("카드 결제 내역을 취소 하세요.");
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.POINT_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT)
        //                        {
        //                            IPaymentUs cHappyPointUse = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINTUSE);
        //                            sRet = cHappyPointUse.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.USER_DC_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.USER_DC.IN_EMP_DC)
        //                        {
        //                            // 입점건물직원할인 취소
        //                            IPaymentUs ciNStorDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.iNStorDC);
        //                            sRet = ciNStorDC.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.PAYETC_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAYETC.MEAL_TIKET)
        //                        {   
        //                            // 식권취소
        //                            IPaymentUs cMealTicket = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.MEALTICKET);
        //                            sRet = cMealTicket.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAYETC.BALANCE_VOUCHER)
        //                        {
        //                            // 잔액교환권 취소
        //                            IPaymentUs cExchangeTicket = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.EXCHANGETICKET);
        //                            sRet = cExchangeTicket.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.GIFT_ITEM :
        //                    {
        //                        // 상품권 취소
        //                        IPaymentUs cGift= (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.GIFT);
        //                        sRet = cGift.CancelPayment(new string[] { iRow.ToString() });
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.CREDIT_ITEM:
        //                    {
        //                        // 외상 취소
        //                        IPaymentUs cSaleOnCustomer = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SALEONCUSTOMER);
        //                        sRet = cSaleOnCustomer.CancelPayment(new string[] { iRow.ToString() });
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM:
        //                    {
        //                        // 외화 취소
        //                        IPaymentUs cForeign = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.FOREIGN);
        //                        sRet = cForeign.CancelPayment(new string[] { iRow.ToString() });
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.PPCARD_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PPCARD.PP_CARD)
        //                        { 
        //                            // 선불카드 취소
        //                            IPaymentUs cPrepaidCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PREPAIDCARD);
        //                            sRet = cPrepaidCard.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PPCARD.HP_GIFT)
        //                        {
        //                            // 해피 기프트 사용 취소
        //                            IPaymentUs cHappyGiftUse = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.HAPPYGIFTUSE);
        //                            sRet = cHappyGiftUse.CancelPayment(new string[] { iRow.ToString(), "1" });
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.EMP_PAY_ITEM:
        //                    {
        //                        if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_PAY.SPC)
        //                        {
        //                            // SPC 임직원 결제 취소
        //                            IPaymentUs cSPCEmployeeUse = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SPCEMPLOYEEUSE);
        //                            sRet = cSPCEmployeeUse.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_PAY.SEVERANCE)
        //                        {
        //                            // 세브란스 직원 결제 취소
        //                            IPaymentUs cSeverancePay = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SEVERANCEDC);
        //                            sRet = cSeverancePay.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_PAY.OURHOME)
        //                        {
        //                            // 아워홈 직원 결제 취소
        //                            IPaymentUs cOurHome= (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.OURHOME);
        //                            sRet = cOurHome.CancelPayment(new string[] { iRow.ToString() });
        //                        }
        //                        break;
        //                    }
        //                case ItemConst.TR_ITEM_ID.PAY_ITEM:
        //                    {
        //                        // 알리페이 취소
        //                        IPaymentUs cAlipay = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.ALIPAY );
        //                        sRet = cAlipay.CancelPayment(new string[] { iRow.ToString() });
        //                        break;
        //                    }
        //                default:
        //                    {
        //                        break;
        //                    }

        //            }

        //        }
        //        else
        //        {
        //            ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);

        //            for (int nRow = 0; nRow < alEtcItem.Count; nRow++ )
        //            {
        //                Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)alEtcItem[nRow];
        //                if (cEtcItem.CANCEL_DIV == ItemConst.PAY_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)
        //                {
        //                    // 해피포인트 적립 취소
        //                    IPaymentUs cHappyPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);
        //                    sRet = cHappyPoint.CancelPayment(new string[] { nRow.ToString() });
        //                    break;
        //                }
        //            }
        //        }

        //        DisplayPayment();

        //        m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        //    }
        //    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="iRow"></param>
        ///// <returns></returns>
        //public string ReturnPay(int iRow)
        //{
        //    string sRet = UserCom.RST_ERR;

        //    try
        //    {
        //        ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);

        //        Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];

        //        if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) return sRet;

        //        switch (cPayItem.PAY_WAY_CD)
        //        {

        //            case ItemConst.TR_ITEM_ID.CREDITCARD_ITEM:
        //                {
        //                    IPaymentUs m_cPayCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CREDITCARD);

        //                    if (cPayItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.NORMAL)
        //                    {
        //                        //카드 입력 받기!
        //                        string sCardInfo = WinPay.ShowForm(new string[] { FormManager.FORM_INPUT_CARD, "", cPayItem.OCCUR_ENTRY_01, cPayItem.PAY_AMT.ToString(), cPayItem.OCCUR_ENTRY_20 });

        //                        if (CmUtil.MidH(sCardInfo, 0, 2) == "00")
        //                        {
        //                            sRet = m_cPayCard.RefundPayment(new string[] { iRow.ToString(), sCardInfo });
        //                        }
        //                    }
        //                    else
        //                    {
        //                        sRet = m_cPayCard.RefundPayment(new string[] { iRow.ToString() });
        //                    }

        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.MOBILE_COM_POINT: //제휴 통신사 할인 취소
        //                {
        //                    if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KTF || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_LGT)
        //                    {
        //                        IPaymentUs cMobileComPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTMOBILECOM);
        //                        sRet = cMobileComPoint.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    else
        //                    {
        //                        IPaymentUs cMemberPointUse = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTMEMBERUSE);

        //                        sRet = cMemberPointUse.RefundPayment(new string[] { iRow.ToString() });
        //                    }

        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.CASH_ITEM:
        //                {

        //                    IPaymentUs m_cPayCash = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CASH);

        //                    sRet = m_cPayCash.RefundPayment(new string[] { iRow.ToString() });
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.COUPON_ITEM:
        //                {
        //                    if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.COUPON.INCARD)
        //                    {
        //                        IPaymentUs cMobileComPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYCOUPON);
        //                        sRet = cMobileComPoint.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    else
        //                    {
        //                        IPaymentUs m_cCouponDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.COUPONDC);

        //                        sRet = m_cCouponDC.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.MOBILECON_ITEM:
        //                {
        //                    IPaymentUs m_cMobileCoupon = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.MOBILECOUPON);

        //                    sRet = m_cMobileCoupon.RefundPayment(new string[] { iRow.ToString() });
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.EMP_DC_ITEM:
        //                {
        //                    if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SEVERANCE)
        //                    {
        //                        IPaymentUs m_cSeveranceDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SEVERANCEDC);

        //                        sRet = m_cSeveranceDC.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SPC)
        //                    {
        //                        IPaymentUs m_cSPCEmployeeDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SPCEMPLOYEEDC);

        //                        sRet = m_cSPCEmployeeDC.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SAMSUNGCARD)
        //                    {
        //                        WinManager.ConfirmMessage("카드 결제 내역을 취소 하세요.");
        //                    }
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.POINT_ITEM:
        //                {
        //                    if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT)
        //                    {
        //                        IPaymentUs cHappyPointUse = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINTUSE);
        //                        sRet = cHappyPointUse.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.USER_DC_ITEM:
        //                {
        //                    if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.USER_DC.IN_EMP_DC)
        //                    {
        //                        // 입점건물직원할인 취소
        //                        IPaymentUs ciNStorDC = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.iNStorDC);
        //                        sRet = ciNStorDC.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.PAYETC_ITEM:
        //                {
        //                    if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAYETC.MEAL_TIKET)
        //                    {
        //                        // 식권취소
        //                        IPaymentUs cMealTicket = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.MEALTICKET);
        //                        sRet = cMealTicket.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    else if (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.PAYETC.BALANCE_VOUCHER)
        //                    {
        //                        // 잔액교환권 취소
        //                        IPaymentUs cExchangeTicket = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.EXCHANGETICKET);
        //                        sRet = cExchangeTicket.RefundPayment(new string[] { iRow.ToString() });
        //                    }
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.GIFT_ITEM:
        //                {
        //                    // 상품권 취소
        //                    IPaymentUs cGift = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.GIFT);
        //                    sRet = cGift.RefundPayment(new string[] { iRow.ToString() });
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.CREDIT_ITEM:
        //                {
        //                    // 외상 취소
        //                    IPaymentUs cSaleOnCustomer = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SALEONCUSTOMER);
        //                    sRet = cSaleOnCustomer.RefundPayment(new string[] { iRow.ToString() });
        //                    break;
        //                }
        //            case ItemConst.TR_ITEM_ID.RESERVATION_ITEM:
        //                {
        //                    // 외상 취소
        //                    IPaymentUs cReservPay = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.RESERVED_PAY);
        //                    sRet = cReservPay.RefundPayment(new string[] { iRow.ToString() });
        //                    break;
        //                }

        //            default:
        //                {
        //                    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);
        //    }

        //    return sRet;

        //}



        private void tmrCustCount_Tick(object sender, EventArgs e)
        {
            tmrCustCount.Enabled = false;

            if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_END)
            {
                this.SaleMainExit();
                return;
            }
            else
            {
                m_cPosStatus.Sale.ScreenSaverTime = "";    // 화면보호기 대기시간 설정

                if (PosMstManager.GetPosOption(POS_OPTION.OPT203) == "1")
                {
                    //string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_SERVER });
                    //string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ETC_SERVER_REG });
                    lblTableInfo_Click(null, null);
                }

                // 고객수 입력
                if (PosMstManager.GetPosOption(POS_OPTION.OPT004) == "3")
                {
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "1")           //결제 고객
                    {
                        string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "PAY" });
                        if (sRet != UserCom.RST_ERR)
                        {
                            m_cTrnStatus.Head.PayGndrDiv = CmUtil.MidH(sRet, 0, 1);
                            m_cTrnStatus.Head.PayAge = CmUtil.LongParse(CmUtil.MidH(sRet, 1, 2));
                        }
                    }
                    else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "2")      //상세고객수
                    {
                        string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "" });
                    }
                    else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "3")      //고객수 
                    {
                        string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.GUEST_CNT });

                        if (sRet != UserCom.RST_ERR)
                        {
                            m_cTrnStatus.Head.CustCnt = CmUtil.IntParse(sRet);
                        }
                    }
                    else
                    {
                        //미사용
                    }
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
        }

        private void rtbMotSale_Click(object sender, EventArgs e)
        {
            DisplayInit(true, false);
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        private void btnItemGridUpDown_Click(object sender, EventArgs e)
        {
            try
            {

#if true        //grayber@20171213 부가메뉴 등록중 일때 동작 개선 start
                // 부가메뉴 등록중일때 스클롤 버튼으로 부가메뉴가 닫히지 않도록 처리
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
                {
                    WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0022);
                    return;
                }
#endif          //grayber@20171213 부가메뉴 등록중 일때 동작 개선 end

                // 선불카드모드에서 선불카드 등록패널 사라지지 않게 수정(2017.06.22) - 중국만 적용
                if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN)
                {
                    if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
                        && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
                    {
                        pnlSetMenu.Visible = false;
                        pnlSubMenu.Visible = false;
                    }
                }
                else
                {
                    pnlSetMenu.Visible = false;
                    pnlSubMenu.Visible = false;
                }

                if ((UI.CsmButton)sender == btnItemGridUp)
                {
                    SaleItemGrid.ButtonUpProc();
                    // 상품 등록내역 고객용 화면 표시
                    m_cCustDisp.DisplaySaleItemSelect(SaleItemGrid.SelectedIndex);
                }
                else if ((UI.CsmButton)sender == btnItemGridTop)
                {
                    SaleItemGrid.ButtonTopProc();
                    // 상품 등록내역 고객용 화면 표시
                    m_cCustDisp.DisplaySaleItemSelect(SaleItemGrid.SelectedIndex);
                }
                else if ((UI.CsmButton)sender == btnItemGridDown)
                {
                    SaleItemGrid.ButtonDownProc();
                    // 상품 등록내역 고객용 화면 표시
                    m_cCustDisp.DisplaySaleItemSelect(SaleItemGrid.SelectedIndex);
                }
                else if ((UI.CsmButton)sender == btnItemGridBottom)
                {
                    SaleItemGrid.ButtonBottomProc();
                    // 상품 등록내역 고객용 화면 표시
                    m_cCustDisp.DisplaySaleItemSelect(SaleItemGrid.SelectedIndex);
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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 picCampaign_Click(object sender, EventArgs e)
        {
            picCampaign.Visible = false;
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        private void padInPut_Click(object sender, EventArgs e)
        {
            m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
        }

        private void lblIFStatus_Click(object sender, EventArgs e)
        {
            try
            {
                string sMenuKey = string.Empty;
                if ((Cosmos.UI.CsmLabel)sender == lblIFStatus1)          // 해피오더
                {
                    sMenuKey = "";
                }
                else if ((Cosmos.UI.CsmLabel)sender == lblIFStatus2)     // 빚은몰
                {
                    sMenuKey = PosKey.MENU_KEY.WEB_BIZEUN_MALL;
                }
                else if ((Cosmos.UI.CsmLabel)sender == lblIFStatus3)     // 이지웰
                {
                    sMenuKey = PosKey.MENU_KEY.WEB_EZWELL;
                }

                if (WinBasic.CheckMenuKeyAuth(sMenuKey) == false) return;      // 기능키 판매원 권한 체크
                //string sMngAuth = PosMstManager.GetMstPicAuth(m_cPosStatus.Base.CashierNo + sMenuKey);

                //switch (sMngAuth)
                //{
                //    case PosConst.MNG_AUTH_DIV.NON_PERMISSION:
                //        WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0308), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0505), false);
                //        return;
                //    case PosConst.MNG_AUTH_DIV.PERMISSION:
                //        break;
                //    case PosConst.MNG_AUTH_DIV.SUPERVISOR:
                //        if (WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_ADMIN }) == UserCom.RST_ERR) return;
                //        //string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_CASHIER_INPUT, "Supervisor" });
                //        //if (sRet != UserCom.RST_OK)
                //        //{
                //        //    return;
                //        //}
                //        break;
                //}

                if ((Cosmos.UI.CsmLabel)sender == lblIFStatus1)          // 해피오더
                {
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT035) == "1")
                    {
                        //#15626 PB 평택법조타운 - 포스사용중 '고객센터로 연락주세요'팝업창 뜨는 증상 start
                        // 상품 등록 중일 경우 빠져 나간다.
                        //변경
                        ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                        if (alSaleItem.Count > 0)
                        {
                            WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0021));
                            return;
                        }
                        //#15626 PB 평택법조타운 - 포스사용중 '고객센터로 연락주세요'팝업창 뜨는 증상 end

                        tmrSaleTimer.Stop();
                        
                        //#20180615 해피오더 팝업 수정 start
                        //기존
                        //WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD_POPUP, "NORMAL" });
                        //변경
                        WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01", "C" });
                        //#20180615 해피오더 팝업 수정 end

                        tmrSaleTimer.Start();
                    }
                }
                else if ((Cosmos.UI.CsmLabel)sender == lblIFStatus2)     // 빚은몰
                {
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT036) == "1")
                    {
                        WinBasic.ShowWebPos(PosKey.MENU_KEY.WEB_BIZEUN_MALL, true);
                        //WinBasic.ShowForm(new string[] { FormManager.FORM_WEB_BIZEUN, PosKey.MENU_KEY.WEB_BIZEUN_MALL });
                    }
                }
                else if ((Cosmos.UI.CsmLabel)sender == lblIFStatus3)     // 이지웰
                {
                    if (PosMstManager.GetPosOption(POS_OPTION.OPT037) == "1")
                    {
                        WinBasic.ShowWebPos(PosKey.MENU_KEY.WEB_EZWELL);
                        //WinBasic.ShowForm(new string[] { FormManager.FORM_WEB_EZWELW, PosKey.MENU_KEY.WEB_EZWELL });
                    }
                }
                else if ((Cosmos.UI.CsmLabel)sender == lblOwnerPart)     // 점주알바WEB
                {
                    WinBasic.ShowWebPos(PosKey.MENU_KEY.OWNER_WEB);
                    //ShowOwnerPartWeb(PosKey.MENU_KEY.OWNER_WEB);
                }
                else if ((Cosmos.UI.CsmLabel)sender == lblAnniv)        // 기념일배송
                {
                    lblAnniv.Tag = "";
                    lblAnniv.BackColor = Color.FromArgb(34, 34, 34);
                    //디비업데이트

                    m_cDataCommon.UpdateEtcNoticeProcess("05", null);
                    WinBasic.ShowWebPos(PosKey.MENU_KEY.REMB_ORDER_PRINT);
                    //ShowOwnerPartWeb(PosKey.MENU_KEY.REMB_ORDER_PRINT);
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }


        #region  SLIDE 메뉴 함수
        /// <summary>
        /// SLIDE 메뉴
        /// </summary>
        /// <param name="sPosMenuKeyIn"></param>
        private void MenuSlideList()
        {
            try
            {
                m_alMenuHead = new ArrayList();
                m_alMenuProc = new ArrayList();

                DataTable dtFuncKey = null;

                // SLIDE메뉴 들어갈 시에도 권한체크(2017.07.07)
                // 키 그룹 판매원 권한 체크
                if (WinBasic.CheckMenuKeyAuth(m_sPosMenuKeyIn) == false) return;

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //헤더 로드
                dtFuncKey = m_cDataCommon.SeletFuncKey(m_sPosMenuKeyIn);
                if (dtFuncKey == null || dtFuncKey.Rows.Count <= 0)
                {
                    //return;
                }
                else
                {
                    foreach (DataRow dr in dtFuncKey.Rows)
                    {
                        string sPosName = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY.DATA.FUNC_NM);         // 기능명
                        m_alMenuHead.Add(new string[] { m_sPosMenuKeyIn, sPosName });
                    }
                }

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


                if (m_SlideMenuKey == PosKey.MENU_KEY.FOREIGNERS_RESPONSE)
                {
                    dtFuncKey = m_cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.Z0017, "");
                    if (dtFuncKey == null || dtFuncKey.Rows.Count <= 0)
                    {
                        return;
                    }
                    else
                    {
                        foreach (DataRow dr in dtFuncKey.Rows)
                        {
                            string sDispSeq = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.DISP_SEQ);    // 표시순번
                            string sPosName = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CD_NM);       // 기능명
                            string sPosKey = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CMM_CD);       // 기능키

                            //if (CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_01) == "1")
                            m_alMenuProc.Add(new string[] { m_sPosMenuKeyIn, sDispSeq, sPosName, sPosKey });   //배열저장

                        }
                    }
                }
                else if (m_sPosMenuKeyIn == PosKey.MENU_KEY.TOP_MENU_WEB)
                {
                    dtFuncKey = m_cDataCommon.SeletMstWebLinkMst("");
                    if (dtFuncKey == null || dtFuncKey.Rows.Count <= 0)
                    {
                        return;
                    }
                    else
                    {
                        int seqIndex = 0;
                        foreach (DataRow dr in dtFuncKey.Rows)
                        {
                            //string sDispSeq = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.DISP_SEQ);    // 표시순번
                            string sPosName = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.MENU_NM);       // 기능명
                            string sPosKey = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.FUNC_ID);       // 기능키

                            //if (CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.DIV) == "2")
                            //{
                            seqIndex = seqIndex + 1;
                            string sDispSeq = Convert.ToString(seqIndex);     // 표시순번
                            m_alMenuProc.Add(new string[] { m_sPosMenuKeyIn, sDispSeq, sPosName, sPosKey });   //배열저장
                            //}


                        }
                    }
                }
                else
                {
                    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    // 판매기본 기능키 로딩
                    dtFuncKey = m_cDataCommon.SeletFuncKeyGroup(m_sPosMenuKeyIn);
                    if (dtFuncKey == null || dtFuncKey.Rows.Count <= 0)
                    {
                        return;
                    }
                    else
                    {
                        foreach (DataRow dr in dtFuncKey.Rows)
                        {
                            string sDispSeq = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.DISP_SEQ);        // 표시순번
                            string sPosName = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_NM);         // 기능명
                            string sPosKey = CmUtil.GetDataRowStr(dr, PosMst.MST_FUNC_KEY_GRP.DATA.FUNC_ID);          // 기능키

                            m_alMenuProc.Add(new string[] { m_sPosMenuKeyIn, sDispSeq, sPosName, sPosKey });           //배열저장

                        }
                    }
                }

            }
            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>
        /// SLIDE 메뉴 컨트롤 초기화
        /// </summary>
        private void SlideInitControl()
        {
            try
            {
                // 이미지 로딩 처리
                //picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_S);

                //this.Location = new Point(216, 173);
                //this.Size = new Size(788, 402);

                //FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);

                // 메뉴 타이틀 출력
                foreach (string[] aMenu in m_alMenuHead)
                {
                    if (aMenu[0] == m_sPosMenuKeyIn)
                    {
                        //lblTitle.Text = aMenu[1];
                        break;
                    }
                }

                m_nTopPos = 0;
                SlideMenuDisplay();      //화면에 메뉴 표시
            }
            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>
        /// SLIDE 화면에 메뉴 표시
        /// </summary>
        private void SlideMenuDisplay()
        {
            try
            {
                int nMax = 0;

                // 메뉴 상세 초기화
                foreach (object obj in m_htMenuControls.Values)
                {
                    Cosmos.UI.CsmLabel btnCtl = (Cosmos.UI.CsmLabel)obj;
                    btnCtl.Text = "";
                    btnCtl.Tag = "";
                    // btnCtl.Visible = false;
                }

                //0:메뉴항목, 1:위치, 2:표시텍스트, 3:기능키값
                foreach (string[] aMenu in m_alMenuProc)
                {
                    if (aMenu[0] == m_sPosMenuKeyIn)
                    {
                        nMax = m_htMenuControls.Count;

                        int nPos = int.Parse(aMenu[1]);      // 표시위치
                        if (nPos > m_nTopPos && nPos <= m_nTopPos + nMax)
                        {
                            Cosmos.UI.CsmLabel btnCtl = (Cosmos.UI.CsmLabel)m_htMenuControls[(nPos - 1) % nMax];

                            btnCtl.Text = aMenu[2];
                            btnCtl.Tag = aMenu[3];
                            //btnCtl.Visible = true;
                        }
                    }
                }

                SlideSetNavigationBtn(m_alMenuProc.Count);

            }
            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="nMax"></param>
        private void SlideSetNavigationBtn(int nMax)
        {
            try
            {
                if (m_nTopPos == 0)
                    btnUp.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_LEFT_DEFAULT);
                //btnUp.Text = "■";
                else
                    btnUp.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_LEFT_DIM);
                //btnUp.Text = "◀";

                if (m_nTopPos + 7 < nMax)
                    btnDown.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_RIGHT_DIM);
                //btnDown.Text = "▶";
                else
                    btnDown.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_RIGHT_DEFAULT);
                //btnDown.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);
            }

        }

        private void SlideSetMenuBtn()
        {
            try
            {
                #region 메뉴버튼
                // 메뉴버튼 
                m_htMenuControls = new Hashtable();
                m_htMenuControls.Add(m_htMenuControls.Count, btnMenu01);
                m_htMenuControls.Add(m_htMenuControls.Count, btnMenu02);
                m_htMenuControls.Add(m_htMenuControls.Count, btnMenu03);
                m_htMenuControls.Add(m_htMenuControls.Count, btnMenu04);
                m_htMenuControls.Add(m_htMenuControls.Count, btnMenu05);
                m_htMenuControls.Add(m_htMenuControls.Count, btnMenu06);
                //m_htMenuControls.Add(m_htMenuControls.Count, btnMenu07);


                picMenuSlide.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_BG);

                btnMenu01.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);
                btnMenu02.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);
                btnMenu03.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);
                btnMenu04.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);
                btnMenu05.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);
                btnMenu06.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);

                picMenuSlide.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_BG);
                btnUp.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_LEFT_DEFAULT);
                btnDown.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_RIGHT_DEFAULT);
                //picMenuSlide.Image = ImageManager.GetImage(BaseCom.NxImgPath + @"Btn\", "popup_bg.png");

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

            }


        }

        /// <summary>
        /// 기능 버튼 입력 처리
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSlideFuncProc_Click(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 + "()", ((Cosmos.UI.CsmLabel)sender).Text.ToString());

                if (((Cosmos.UI.CsmLabel)sender) == btnUp)
                {
                    int nMax = m_htMenuControls.Count;
                    if (m_nTopPos > 0)
                    {
                        m_nTopPos -= nMax;
                        SlideMenuDisplay();
                    }
                }
                else if (((Cosmos.UI.CsmLabel)sender) == btnDown)
                {
                    int nMax = m_htMenuControls.Count;

                    foreach (string[] aMenu in m_alMenuProc)
                    {
                        if (aMenu[0] == m_sPosMenuKeyIn)
                        {
                            if (int.Parse(aMenu[1]) > m_nTopPos + nMax)
                            {
                                m_nTopPos += nMax;
                                SlideMenuDisplay();
                                break;
                            }
                        }
                    }
                }
                else
                {

                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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 btnMenu_Click(object sender, EventArgs e)
        {
            try
            {

                tmrSaleTimer.Enabled = false;

                if (((Cosmos.UI.CsmLabel)sender).Tag.ToString() != "")
                {
                    UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ((Cosmos.UI.CsmLabel)sender).Text.ToString());

                    m_SlideMenuKey = ((Cosmos.UI.CsmLabel)sender).Tag.ToString();

                    if (m_SlideMenuKey != PosKey.MENU_KEY.FOREIGNERS_RESPONSE)
                    {
                        this.pnlMenuSlide.Visible = false;
                    }

                    if (m_sPosMenuKeyIn == PosKey.MENU_KEY.TOP_MENU_WEB)
                    {
                        string sMenuKey = ((Cosmos.UI.CsmLabel)sender).Tag.ToString();
                        //WinBasic.ShowWebPos(((Cosmos.UI.CsmLabel)sender).Tag.ToString());

                        if (sMenuKey == PosKey.MENU_KEY.WEB_BIZEUN_MALL)
                        {
                            WinBasic.ShowWebPos(sMenuKey, true);
                        }
                        else
                        {
                            WinBasic.ShowWebPos(sMenuKey);
                        }
                    }
                    else
                    {
                        if (m_SlideMenuKey == PosKey.MENU_KEY.FOREIGNERS_RESPONSE)
                        {
                            MenuSlideList();
                            SlideInitControl();
                        }
                        else
                        {
                            // 외국인 대응에 대한 경우에만 직접 보여준다.
                            if (m_SlideMenuKey == "001" || m_SlideMenuKey == "002" || m_SlideMenuKey == "003")
                            {
                                WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_FOREIGNERS_RESPONSE, m_SlideMenuKey });
                            }
                            else
                            {
                                WinSale.ExecuteBinessRun(m_SlideMenuKey);
                            }
                        }

                        //WinSale.ExecuteBinessRun(((Cosmos.UI.CsmLabel)sender).Tag.ToString());
                    }
                    //WinSale.ExecuteBinessRun(((Cosmos.UI.CsmLabel)sender).Tag.ToString());
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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
            {
                tmrSaleTimer.Enabled = true;
            }
        }

        private void btnSlidePage_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ((Cosmos.UI.CsmLabel)sender).Text.ToString());

                if (((Cosmos.UI.CsmLabel)sender) == btnUp)
                {
                    btnUp.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_LEFT_PRESS);
                }
                if (((Cosmos.UI.CsmLabel)sender) == btnDown)
                {
                    btnDown.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_PAGEBTN_RIGHT_PRESS);
                }
            }
            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 btnSlidePage_MouseUp(object sender, MouseEventArgs e)
        {
            SlideSetNavigationBtn(m_alMenuProc.Count);
        }

        private void btnMenu_MouseUp(object sender, MouseEventArgs e)
        {
            ((Cosmos.UI.CsmLabel)sender).Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_DEFAULT);
        }

        private void btnMenu_MouseDown(object sender, MouseEventArgs e)
        {
            ((Cosmos.UI.CsmLabel)sender).Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.MENUSLIDE_CATEGORY_BTN_PRESS);
        }

        #endregion  SLIDE 메뉴 함수

        /// <summary>
        /// 간편로그인 호출
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lblCashier_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
                {
                    string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.SIMPLE_LOG_ON });
                    if (sRet != UserCom.RST_ERR && sRet !="")
                    {
                        lblCashier.Text = m_cPosStatus.Base.CashierName;
                    }
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            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 lblTemperature_Click(object sender, EventArgs e)
        {
            try
            {
                if (pnlTempInfo.Visible != true)
                {
                    pnlTempInfo.Visible = true;
                }
                else
                {
                    pnlTempInfo.Visible = false;
                }

                if (m_cPosStatus.Temp.Temperature1 != null && m_cPosStatus.Temp.Temperature1 != "")
                {
                    #region 온도정보 색상
                    // 우선 순위      : 미수신 > 알람 > 경고
                    //- 녹색(정상)   : 알람-N, 경고-N, 미수신-N
                    //- 회색(미수신) : 미수신-Y  미수신이 Y이면 알람, 경고는 체크 하지 않음
                    //- 적색(경고)   : 미수신-N, 알람-Y  알람이 Y이면 경고는 체크 하지 않음
                    //- 황색(알람)   : 미수신-N, 알람-N, 경고-Y
                    // [센서ID|온도계명|측정온도|알람YN|경고YN|미수신YN|최종수신시간]

                    // 첫번째 온도 정보
                    if (m_cPosStatus.Temp.Alarm1 == "N" && m_cPosStatus.Temp.Warning1 == "N" && m_cPosStatus.Temp.receiveYN1 == "N")
                    {
                        // 녹색
                        lblTemp1.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0653), m_cPosStatus.Temp.Name1, m_cPosStatus.Temp.Temperature1);
                        lblTemp1.ForeColor = Color.Green;
                    }
                    else
                    {
                        if (m_cPosStatus.Temp.receiveYN1 == "Y")
                        {
                            // 회색
                            lblTemp1.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0654), m_cPosStatus.Temp.Name1, m_cPosStatus.Temp.Temperature1);
                            lblTemp1.ForeColor = Color.DarkGray;
                        }
                        else if (m_cPosStatus.Temp.receiveYN1 == "N")
                        {
                            if (m_cPosStatus.Temp.Alarm1 == "Y")
                            {
                                // 레드
                                lblTemp1.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0655), m_cPosStatus.Temp.Name1, m_cPosStatus.Temp.Temperature1);
                                lblTemp1.ForeColor = Color.Red;
                            }
                            else if (m_cPosStatus.Temp.Alarm1 == "N")
                            {
                                // 황색
                                lblTemp1.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0656), m_cPosStatus.Temp.Name1, m_cPosStatus.Temp.Temperature1);
                                lblTemp1.ForeColor = Color.DarkOrange;
                            }
                        }
                    }
                }
                else
                {
                    lblTemp1.ForeColor = Color.Black;
                    lblTemp1.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0657);
                }

                if (m_cPosStatus.Temp.Temperature2 != null && m_cPosStatus.Temp.Temperature2 != "")
                {
                    // 두번째 온도 정보
                    if (m_cPosStatus.Temp.Alarm2 == "N" && m_cPosStatus.Temp.Warning2 == "N" && m_cPosStatus.Temp.receiveYN2 == "N")
                    {
                        // 녹색
                        lblTemp2.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0653), m_cPosStatus.Temp.Name2, m_cPosStatus.Temp.Temperature2);
                        lblTemp2.ForeColor = Color.Green;
                    }
                    else
                    {
                        if (m_cPosStatus.Temp.receiveYN2 == "Y")
                        {
                            // 회색
                            lblTemp2.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0654), m_cPosStatus.Temp.Name2, m_cPosStatus.Temp.Temperature2);
                            lblTemp2.ForeColor = Color.DarkGray;
                        }
                        else if (m_cPosStatus.Temp.receiveYN2 == "N")
                        {
                            if (m_cPosStatus.Temp.Alarm2 == "Y")
                            {
                                // 레드
                                lblTemp2.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0655), m_cPosStatus.Temp.Name2, m_cPosStatus.Temp.Temperature2);
                                lblTemp2.ForeColor = Color.Red;
                            }
                            else if (m_cPosStatus.Temp.Alarm2 == "N")
                            {
                                // 황색
                                lblTemp2.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0656), m_cPosStatus.Temp.Name2, m_cPosStatus.Temp.Temperature2);
                                lblTemp2.ForeColor = Color.DarkOrange;
                            }
                        }
                    }
                }
                else
                {
                    lblTemp2.ForeColor = Color.Black;
                    lblTemp2.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0657);
                }

                if (m_cPosStatus.Temp.Temperature3 != null && m_cPosStatus.Temp.Temperature3 != "")
                {
                    // 세번째 온도 정보
                    if (m_cPosStatus.Temp.Alarm3 == "N" && m_cPosStatus.Temp.Warning3 == "N" && m_cPosStatus.Temp.receiveYN3 == "N")
                    {
                        // 녹색
                        lblTemp3.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0653), m_cPosStatus.Temp.Name3, m_cPosStatus.Temp.Temperature3);
                        lblTemp3.ForeColor = Color.Green;
                    }
                    else
                    {
                        if (m_cPosStatus.Temp.receiveYN3 == "Y")
                        {
                            // 회색
                            lblTemp3.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0654), m_cPosStatus.Temp.Name3, m_cPosStatus.Temp.Temperature3);
                            lblTemp3.ForeColor = Color.DarkGray;
                        }
                        else if (m_cPosStatus.Temp.receiveYN3 == "N")
                        {
                            if (m_cPosStatus.Temp.Alarm3 == "Y")
                            {
                                // 레드
                                lblTemp3.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0655), m_cPosStatus.Temp.Name3, m_cPosStatus.Temp.Temperature3);
                                lblTemp3.ForeColor = Color.Red;
                            }
                            else if (m_cPosStatus.Temp.Alarm3 == "N")
                            {
                                // 황색
                                lblTemp3.Text = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0656), m_cPosStatus.Temp.Name3, m_cPosStatus.Temp.Temperature3);
                                lblTemp3.ForeColor = Color.DarkOrange;
                            }
                        }
                    }
                }
                else
                {
                    lblTemp3.ForeColor = Color.Black;
                    lblTemp3.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0657);
                }
                    #endregion 온도정보 색상

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 디바이스 정보 클릭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lblDeviceState_Click(object sender, EventArgs e)
        {
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = "";    //화면보호기 대기시간 설정

                // 주변장치 상태 관리 화면
                string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_DEVICE_STATUS_SEARCH, PosKey.MENU_KEY.DEVICE_STATUS_SEARCH });

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 온도정보 클릭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TempInfo_Click(object sender, EventArgs e)
        {
            try
            {
                if (pnlTempInfo.Visible != true)
                {
                    pnlTempInfo.Visible = true;
                }
                else
                {
                    pnlTempInfo.Visible = false;
                }
                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 프로그램 버전 더블클릭(원격 웹사이트)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lblPgmVersion_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                IDataServiceUs m_cWebBiz = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.WEB_POS);

                string sUrl = string.Empty;

                sUrl = (string)m_cWebBiz.GetData(new string[] { PosKey.MENU_KEY.REMOTE_URL });
                if (sUrl == null || sUrl == "") return;

                if (sUrl.StartsWith("2") == true)           // 1: WEB POS, 2:WEB LINK
                {
                    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo("IExplore.exe");
                    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
                    startInfo.Arguments = CmUtil.MidH(sUrl, 31, 100).Trim() + CmUtil.MidH(sUrl, 131, 100).Trim();

                    System.Diagnostics.Process.Start(startInfo);
                }

                m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss");    //화면보호기 대기시간 설정
                return;
            }
            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;
        }

        /// <summary>
        /// 네트워크 온오프 체크
        /// </summary>
        private void OnLinecheck()
        {

            try
            {
                //NW ON/OFF
                if (CmUtil.IsNetConnection() == 1)
                {
                    if (picWeb.Tag.ToString() != "ON")
                    {
                        picWeb.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.WEB_ICON);
                        picWeb.Tag = "ON";
                        lblWeb.Tag = "0";


                        lblWeb.Text = "WEB";
                        lblWeb.ForeColor = Color.White;
                    }

                    lblOffLine.Visible = false;

                }
                else
                {
                    if (picWeb.Tag.ToString() != "OFF")
                    {
                        picWeb.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.WEB_ICON_ERROR);
                        picWeb.Tag = "OFF";
                    }

                    lblOffLine.Visible = true;

                    //// WEB 글자색 변경!
                    //if (lblWeb.ForeColor == Color.White)
                    //{
                    //    lblWeb.ForeColor = CmUtil.GetRainbowColor(lblWeb.Tag.ToString());

                    //    if (lblWeb.Tag.ToString() == "7") lblWeb.Tag = "0";
                    //    lblWeb.Tag = (CmUtil.IntParse(lblWeb.Tag.ToString()) + 1).ToString();
                    //    lblWeb.Text = "OFF LINE";
                    //}
                    //else
                    //{
                    //    lblWeb.ForeColor = Color.White;
                    //    lblWeb.Text = "WEB";
                    //}

                }

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

        /// <summary>
        /// 할인상세 내역 표시
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtPayDiscountAmt_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_cTrnStatus.Head.TotDcAmt == 0) return;

                WinBasic.ShowForm(new string[] { FormManager.FORM_DISCOUNT_LIST });
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
            }
        }

        /// <summary>
        /// 상품등록 내역 조회
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtPayQtySaleAmt_Click(object sender, EventArgs e)
        {
            try
            {
                WinBasic.ShowForm(new string[] { FormManager.FORM_SALEPLU_LIST });
            }
            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 MenuSlide_Click(object sender, EventArgs e)
        {
            try
            {
                if (pnlMenuSlide.Visible != true)
                {
                    pnlMenuSlide.Visible = true;
                    pnlMenuSlide.BringToFront();
                }
                else
                {
                    pnlMenuSlide.Visible = 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);
            }
        }

        #region 상단 일자 시간 표시
        private delegate void SetDatetimeCallback();
        /// <summary>
        /// 일자시간 표시
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tmrDateTime_Tick(object sender, EventArgs e)
        {
            try
            {
                tmrDateTime.Stop();
                SetDateTime();
                tmrDateTime.Start();

                //---------------------------------------------------------------------
                // (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 상태바 표시 처리
                //---------------------------------------------------------------------
                // - 이전의 tmrSaleTimer 이벤트가 중간중간 멈추는 경우가 생겨서
                //   이쪽 tmrDateTime 이벤트로 이동함
                //---------------------------------------------------------------------
                #region 해피포인트 제휴할인 선리딩 처리를 위한 상태바 표시 처리
                lblPriorReading1.BackColor = Color.FromArgb(34, 34, 34);
                lblPriorReading2.BackColor = Color.FromArgb(34, 34, 34);
                #region 첫번째 레이블
                if (m_cPosStatus.Sale.strPriorReading_Title[0] != null && m_cPosStatus.Sale.strPriorReading_Title[0] != "")
                {
                    lblPriorReading1.Text = m_cPosStatus.Sale.strPriorReading_Title[0];
                    lblPriorReading2.Text = "";

                    if (lblPriorReading1.Text == "HPC")
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(217, 151, 149);
                        lblPriorReading1.ForeColor = Color.White;
                    }
                    else if (lblPriorReading1.Text != "")
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(51, 153, 255);
                        lblPriorReading1.ForeColor = Color.White;
                    }
                    else
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(34, 34, 34);
                    }
                }
                else
                {
                    lblPriorReading1.Text = "";
                    lblPriorReading2.Text = "";
                }
                #endregion

                #region 두번째 레이블
                if (m_cPosStatus.Sale.strPriorReading_Title[1] != null && m_cPosStatus.Sale.strPriorReading_Title[1] != "")
                {
                    lblPriorReading1.Text = m_cPosStatus.Sale.strPriorReading_Title[0];
                    lblPriorReading2.Text = m_cPosStatus.Sale.strPriorReading_Title[1];

                    if (lblPriorReading1.Text == "HPC")
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(217, 151, 149);
                        lblPriorReading1.ForeColor = Color.White;
                    }
                    else if (lblPriorReading1.Text != "")
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(51, 153, 255);
                        lblPriorReading1.ForeColor = Color.White;
                    }
                    else
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(34, 34, 34);
                    }

                    if (lblPriorReading2.Text == "HPC")
                    {
                        lblPriorReading2.BackColor = Color.FromArgb(217, 151, 149);
                        lblPriorReading2.ForeColor = Color.White;
                    }
                    else if (lblPriorReading2.Text != "")
                    {
                        lblPriorReading2.BackColor = Color.FromArgb(51, 153, 255);
                        lblPriorReading2.ForeColor = Color.White;
                    }
                    else if (lblPriorReading2.Text == "")
                    {
                        lblPriorReading1.BackColor = Color.FromArgb(34, 34, 34);
                    }
                }
                else
                {
                    lblPriorReading2.Text = "";
                }

                #endregion

                #endregion
                if(m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "" || pnlAllianceCard.Visible == true)
                { 
                    if(pnlPayMainBack.Visible == false)
                    {
                        if(AllianceCardTime.Year == DateTime.Now.Year)
                        {
                            TimeSpan Ti = DateTime.Now - AllianceCardTime;
                            if (Ti.Seconds > 3)
                            {
                                pnlAllianceCard.Visible = false;
                                AllianceCardTime = new DateTime();
                            }
                        }
                    }
                }

                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510
                //고객 구매이력 정보 표시 시점에 상단 MOT 표시
                //적용시 주석 해제
                if (pnlBuyHistMot.Visible == true)
                {
                    TimeSpan Ti = DateTime.Now - BuyHistTime;
                    if (Ti.Seconds > 3)
                    {
                        pnlBuyHistMot.Visible = false;
                        BuyHistTime = new DateTime();
                    }
                    
                }
                //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510

                //#15058 해피오더 버튼 변경_20180612 start,phj
                if (PosMstManager.GetPosOption(POS_OPTION.OPT035) == "1")
                {
                    if (bSaleMain == true)
                    {
                        NewHPOrdDisplay();
                    }
                    if (bSaleMain == false)
                    {
                        iCount = iCount + 1;

                        if (iCount >= 60)
                        {
                            iCount = 0;
                            bSaleMain = true;
                        }
                    }
                }
                //#15058 해피오더 버튼 변경_20180612 end,phj

                


                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start - #16368
                //기존
                /*
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
                if (PosMstManager.GetPosOption(POS_OPTION.OPT518) == "1")
                {
                    iInventoryDispCnt = iInventoryDispCnt + 1;
                    if (bInventoryDispStat == true)
                    {
                        HappyOrderInventoryAlram();
                        if (iInventoryDispCnt % 60 == 0)
                        {
                            HappyOrderInventoryAlram_StatChange(false);
                        }
                    }
                    else
                    {
                        if (iInventoryDispCnt == 0 || iInventoryDispCnt >= 60 * 10)
                        {
                            HappyOrderInventoryAlram();
                        }
                    }
                }
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end
                */
                //변경
                //--------------------------------------------------
                //레드마인: #16368 
                //요청일자: 2018/08/22
                //요청자  : SPC 안병석 과장
                //내용    : 1. 알람 표시시간
                //          [기존] 제한없음
                //          [변경] 오후2시이후부터 표시
                //          2. 알람 자동 표시 시간
                //          [기존] 닫기버튼 클릭 시 10분마다 자동 표시
                //          [변경] 매시간 30분마다 자동 표시 후 5분간 표시
                //          단, 닫기 버튼 클릭 시 알람 닫기
                //--------------------------------------------------

                //if (PosMstManager.GetPosOption(POS_OPTION.OPT518) == "1")
                //{
                //    if (Int32.Parse(DateTime.Now.ToString("HH")) >= 14)
                //    {
                //        if (PosMstManager.GetPosOption(POS_OPTION.OPT518) == "1")
                //        {
                //            iInventoryDispCnt = iInventoryDispCnt + 1;
                //            if (bInventoryDispStat == true)
                //            {
                //                HappyOrderInventoryAlram();
                //                if (iInventoryDispCnt % (60 * 5) == 0)
                //                {
                //                    HappyOrderInventoryAlram_StatChange(false);
                //                }
                //            }
                //            else
                //            {
                //                if (iInventoryDispCnt == 0 || iInventoryDispCnt >= 60 * 25)
                //                {
                //                    HappyOrderInventoryAlram();
                //                }
                //            }
                //        }
                //    }
                //}

                if ((CmUtil.IntParse(DateTime.Now.ToString("HH")) >= 14) &&
                    ((CmUtil.IntParse(DateTime.Now.ToString("mm")) >= 0 && CmUtil.IntParse(DateTime.Now.ToString("mm")) <= 5) ||
                    (CmUtil.IntParse(DateTime.Now.ToString("mm")) >= 30 && CmUtil.IntParse(DateTime.Now.ToString("mm")) <= 35)))
                {
                    if (bInventoryCancel == false)
                    {
                        HappyOrderInventoryAlram();
                    }
                }
                else
                {
                    bInventoryCancel = false;

                    lb_HPOInventoryAlram.Visible = false;
                    lb_HPOInventoryAlram2.Visible = false;
                    Pnl_HPOInventoryAlram.Visible = false;
                }
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end - #16368
            }
            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>
        /// Date 처리
        /// </summary>
        /// <param name="text"></param>
        private void SetDateTime()
        {
            try
            {
                if (this.lblDateTime.InvokeRequired)
                {
                    SetDatetimeCallback d = new SetDatetimeCallback(SetDateTime);
                    this.Invoke(d);
                }
                else
                {
                    //#20171011 영업일, 시스템일시 위치 변경 start
                    //기존
                    /*
                    this.lblDateTime.Text = m_cPosStatus.Global.DateToCulture(DateTime.Now.ToString("yyyy-MM-dd")) + " " + DateTime.Now.ToString("HH:mm:ss");
                    */
                    //변경
                    string WeekDays = WeekDay(DateTime.Now);
                    string WeekDaySaleDate = WeekDay(Convert.ToDateTime(m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate)));
                    this.lblDateTime.Text = string.Format(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0242) + " : {0}" + "({1})",
                                            m_cPosStatus.Base.SaleDate == "" ? m_cPosStatus.Global.DateToCulture("20000101") : m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate), WeekDaySaleDate);
                    lblSaleDate.Text = string.Format(m_cPosStatus.Global.DateToCulture(DateTime.Now.ToString("yyyyMMdd")) + "({0})" + " " + DateTime.Now.ToString("HH:mm:ss"), WeekDays);
                    //#20171011 영업일, 시스템일시 위치 변경 end
                }
            }
            catch (Exception ex)
            {
                UserLog.WriteLogFile(UserCom.ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.ToString());
            }
        }

        private string WeekDay(DateTime dateTime)
        {
            string tempWeekDay = "";

            var dt = dateTime.DayOfWeek;

            switch (dt)
            {
                case DayOfWeek.Monday: //월
                    tempWeekDay = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1063);
                    break;

                case DayOfWeek.Tuesday: //화
                    tempWeekDay = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1064);
                    break;

                case DayOfWeek.Wednesday: //수
                    tempWeekDay = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1065);
                    break;

                case DayOfWeek.Thursday: //목
                    tempWeekDay = MessageManager.GetLabelMessage((POS_MESSAGE.LABEL.MSG_1066));
                    break;

                case DayOfWeek.Friday: //금
                    tempWeekDay = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1067);
                    break;

                case DayOfWeek.Saturday: //토
                    tempWeekDay = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1068);
                    break;

                case DayOfWeek.Sunday: //일
                    tempWeekDay = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1062);
                    break;
            }
            return tempWeekDay;
        } 
        #endregion

        #region 백그라운드 프로그램 적용 확인 메시지
        /// <summary>
        /// 백그라운드 프로그램 적용 확인 메시지
        /// </summary>
        private void POSProgramApplyCheck()
        {
            string sRet = UserCom.RST_ERR;
            try
            {
                // 프로그램 적용을 위한 재기동 여부 체크
                if (m_cBackgroundDown.PGMReBootCheck() == true)
                {
                    sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_EMERGENCY_NOTICE, PosConst.MSG_BOX_TYPE.QUESTION, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0682), MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0281) });
                }

                if (sRet == UserCom.RST_OK)
                {
                    // 재기동!
                    m_cPosStatus.Sale.SysShutDown = PosConst.SYS_SHUTDOWN.PGMRESTART;
                    SaleMainExit();
                }
            }
            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 lblSaleStatus_Click(판매화면 내리기)
        private void lblSaleStatus_Click(object sender, EventArgs e)
        {
            try
            {
                m_cPosStatus.Sale.ScreenSaverTime = "";

                this.WindowState = FormWindowState.Minimized;

                Form fMainForm = (Form)FormManager.GetForm(FormManager.FORM_POS_MAIN);
                if (fMainForm != null) fMainForm.Top = 2048;

                Form fTableForm = (Form)FormManager.GetForm(FormManager.FORM_TBL_REG);
                if (fTableForm != null) fTableForm.Top = 2048;

                FormManager.m_HideFormIndex = 1;
            }
            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 lblTableInfo_Click(테이블 담당자(판매원) 변경
        private void lblTableInfo_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT) return;

                // 테이블 담당자 입력(변경)
                string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_SERVER });
                if (sRet != UserCom.RST_ERR)
                {
                    lblTableInfo.Text = "[" + m_cTrnStatus.Head.FloorNm + "-" + m_cTrnStatus.Head.TableNm + "]" + m_cTrnStatus.Head.OrderPicNm;
                }
            }
            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 텍스트 박스 포커스 처리
        private void TxtInPutFocus()
        {
            try
            {
                txtInPut.Focus();
            }
            catch { }
        }

        private void lstCampaignList_Click(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void SaleItemGrid_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnMenuFix_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnMenu_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnFlavourMenu_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnSetMenu_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnSubMenuCommGrp_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnSubMenuCommDtl_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void lblWeb_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnSubMenuDtl_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnSubMenuGrp_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnMenuMClass_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnMenuMClassFix_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnSubMenuExit_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnFuncSale_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void btnFuncItem_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }

        private void pnlMotSale_Enter(object sender, EventArgs e)
        {
            TxtInPutFocus();
        }
        #endregion


        /// <summary>
        /// Pos Sale 버젼 (클라이언트)표시
        /// girak.kim; 20173.08.30.001
        /// </summary>
        private void GetClientPOSVersion()
        {
            try
            {   
                lblRealVer.Text = WinBasic.ClientPOSVersion.ToString();
            }
            catch (Exception ex)
            {
                lblRealVer.Text = "0.0.0.0";
            }
        }

        //*****************************************************************************
        // (2017.11.01) 해피포인트 제휴할인 선리딩 처리
        //-----------------------------------------------------------------------------
        // - 만약 결제화면(pnlCardMot)이 표시될 경우
        // - 우선 해피포인트(옵션) 값이 설정되어 있을 경우 
        //   <- 전역변수 : m_cPosStatus.Sale.strHappyPointCardNoOption
        //   '결제' 버튼 클릭 -> 포인트할인결제 화면에서 -> '해피포인트사용' 버튼이 클릭된 상태
        //   = '해피포인트 사용' 화면을 표시한다.
        //*****************************************************************************
        #region 해피포인트 제휴할인 선리딩 처리
        private void pnlCardMot_VisibleChanged(object sender, EventArgs e)
        {
            //========================================
            // 만약 결제화면(pnlCardMot)이 표시될 경우
            //========================================
            if (pnlCardMot.Visible == true)
            {

                //---------------------------------------------------------------------------------------------
                // 만약, 선릉진선 해피포인트 사용 창 결제버튼 클릭 시 자동으로 띄우는 기능이 설정되어 있을 경우
                // '해피포인트 사용' 화면을 표시한다.
                //---------------------------------------------------------------------------------------------
                #region '해피포인트 사용' 화면을 표시한다.
                if (PosMstManager.GetPosOption(POS_OPTION.OPT511) == "1")
                {
                    // 해피포인트 사용(00078) 화면 표시 -----
                    PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT_USE, "3");
                }
                #endregion

                //------------------------------------------------------
                // 만약 해피포인트(옵션) 값이 설정되어 있지 않고, 
                // 해피포인트 또는 제휴할인 카드 값이 설정되어 있을 경우
                // '해피포인트' 및 '제휴할인 카드' 화면을 표시한다.
                //------------------------------------------------------
                #region '해피포인트' 및 '제휴할인 카드' 화면을 표시한다.
                else
                {
                    #region 만약 해피포인트 값이 설정되어 있을 경우 해피포인트 화면을 표시한다.
                    if (m_cPosStatus.Sale.strHappyPointCardNo != "")
                    {
                        //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
                        //기존
                        // 해피포인트(00058) 화면 표시 -----
                        //PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT, "1");
                        //변경
                        #region SPC임직원 여부, 기능키 배치 여부에 따라 SPC임직원할인(결제), SPC임직원할인(할인) 화면 표시
                        if (m_cPosStatus.Sale.strEmpInfo == "3A")
                        {
                            // SPC임직원할인(결제) - 상품에 적용하지 않음
                            DataTable dtFuncKeyArr1 = m_cDataCommon.SeletFuncKeyGroupArr(PosKey.MENU_KEY.SPC_EMPLOYEE_DC_PAY);
                            // SPC임직원할인(할인) - 상품에 적용
                            DataTable dtFuncKeyArr2 = m_cDataCommon.SeletFuncKeyGroupArr(PosKey.MENU_KEY.SPC_EMPLOYEE_DC);

                            if (dtFuncKeyArr1 == null || dtFuncKeyArr1.Rows.Count <= 0)
                            {
                                if (dtFuncKeyArr2 == null || dtFuncKeyArr2.Rows.Count <= 0)
                                {
                                    // SPC임직원할인(결제), SPC임직원할인(할인) 둘다 기능키가 배치되어 있지 않은 경우
                                    // 해피포인트(00058) 화면 표시 -----
                                    PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT, "1");
                                }
                                else
                                {
                                    // SPC임직원할인(할인) 기능키가 배치되어 있는 경우
                                    // 임직원할인(00064) 화면 표시 -----
                                    PayComFuncion(PosKey.MENU_KEY.SPC_EMPLOYEE_DC, "2");
                                }
                            }
                            else
                            {
                                // SPC임직원할인(결제) 기능키가 배치되어 있는 경우
                                // 임직원할인(00281) 화면 표시 -----
                                PayComFuncion(PosKey.MENU_KEY.SPC_EMPLOYEE_DC_PAY, "2");
                            }
                        }
                        else
                        {
                            // SPC임직원이 아닌 경우
                            // 해피포인트(00058) 화면 표시 -----
                            PayComFuncion(PosKey.MENU_KEY.HAPPY_POINT, "1");
                        }
                        #endregion SPC임직원 여부, 기능키 배치 여부에 따라 SPC임직원할인(결제), SPC임직원할인(할인) 화면 표시
                        //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
                    }
                    #endregion

                    //#20180607 판매화면에서 해피포인트 선리딩 시 웰컴카드 번호가 있을 때 두번 조회되는 현상 수정 start
                    // 1. 해피포인트 등록-> 제휴할인 적용(선리딩방식) 첫번째.
                    // 2. 이 함수 타면서 두번째.
                    bool bMobileDcCheck = false;

                    ArrayList alPays = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
                    for (int iRow = 0; iRow < alPays.Count; iRow++)
                    {
                        Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPays[iRow];
                        if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
                        if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT)
                        {
                            bMobileDcCheck = true;
                            break;
                        }
                    }
                    //#20180607 판매화면에서 해피포인트 선리딩 시 웰컴카드 번호가 있을 때 두번 조회되는 현상 수정 end

                    #region 만약 제휴할인 카드 값이 설정되어 있을 경우 제휴할인 카드 화면을 표시한다.
                    if (m_cPosStatus.Sale.strMobileUnityCardNo != "")
                    {
                        //#20180607 판매화면에서 해피포인트 선리딩 시 웰컴카드 번호가 있을 때 두번 조회되는 현상 수정 start
                        //기존
                        /*
                        // 제휴할인 카드(00292) 화면 표시 -----
                        PayComFuncion(PosKey.MENU_KEY.MOBILE_UNITY, "2");
                        */

                        //변경
                        if (bMobileDcCheck == false)
                        {
                            // 제휴할인 카드(00292) 화면 표시 -----
                            PayComFuncion(PosKey.MENU_KEY.MOBILE_UNITY, "2");
                        }
                        //#20180607 판매화면에서 해피포인트 선리딩 시 웰컴카드 번호가 있을 때 두번 조회되는 현상 수정 end
                    }
                    #endregion
                }
                #endregion
            }
        }
        #endregion

        //*****************************************************************************
        // (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 클리어 함수
        //-----------------------------------------------------------------------------
        // - 해피포인트 제휴할인 선리딩 처리를 위한
        //   관련 전역변수들을 클리어 해주는 함수이다.
        // - 만약 새로운 한 건의 판매 프로세스가 시작될 경우 
        //   해피포인트 및 제휴할인 선리딩 처리를 위한
        //   전역변수들을 클리어한다.
        //*****************************************************************************
        #region 해피포인트 제휴할인 선리딩 처리를 위한 클리어 함수
        public void SubPriorReadingVarClear(bool blnDiv)
        {
            // 만약 파라미터 값이 'true'일 경우 -----
            if (blnDiv == true)
            {
                // 전역변수 클리어 ----- 
                m_cPosStatus.Sale.strHappyPointCardNo = "";         // 해피포인트 카드 번호
                m_cPosStatus.Sale.strMobileUnityCardNo = "";        // 제휴할인 카드 번호

                // 해피포인트 옵션 처리 사용 유무 확인 -----
                if (PosMstManager.GetPosOption(POS_OPTION.OPT511) == "1") { }

                // 상태바 클리어 -----
                m_cPosStatus.Sale.strPriorReading_Title = new string[2];    // 선리딩 내역 클리어
                lblPriorReading1.Text = "";                                  // 상태바 내용
                lblPriorReading2.Text = "";

                //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 start
                #region 모바일쿠폰 해피기프트카드 자동인식 기능
                m_cPosStatus.Sale.strMobileCpnNo = "";
                m_cPosStatus.Sale.strHappyGiftCardNo = "";
                #endregion
                //#15608 모바일쿠폰해피기프트카드 자동인식 기능 도입요청 end

                //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
                m_cPosStatus.Sale.strEmpInfo = ""; 
                //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end

            }
        }
        #endregion

        //*** MoonSeokWoo 2017.12.12 Add
        public void AllianceCardInit(bool TranMode,string TitleName,bool HPCGbn)
        {
            lblAllianceCardName.Text = TitleName;
            
            if (HPCGbn == true) lblAllianceCardName.ForeColor = Color.FromArgb(217, 151, 149);
            else lblAllianceCardName.ForeColor = Color.FromArgb(51, 153, 255);

            if (TranMode == true) lblAllianceCardTitle.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0742);
            else lblAllianceCardTitle.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0743);
            
            pnlAllianceCard.Visible = true;

            //#20180413 웰컴카드 신규기능 추가 start,phj
            pnlAllianceCard.BringToFront();
            //#20180413 웰컴카드 신규기능 추가 end,phj

            AllianceCardTime = DateTime.Now;
        }
        //*** MoonSeokWoo 2017.12.12 End

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
        /// <summary>
        /// 해피포인트 고개번호 조회
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private string SchHappyPointMembInfo(string sInPutType, string sInCardNo)
        {
            string sSchMembNo = "";

            try
            {
                m_sInPutType = "";
                m_sInMaskData = "";
                m_sInEncData = "";
                m_sServiceCode = "";
                m_sAppCardNo = "";

                m_sInPutType = sInPutType;
                m_sAppCardNo = sInCardNo;


                // 해피포인트 카드만 자동등록 처리
                if (sInCardNo.StartsWith(PosConst.HP_CARD_PRIFIX) == false) return sSchMembNo;

                IPaymentExpUs m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);

                //암호화
                EncryptedCardNo(m_sAppCardNo, ref m_sInEncData, ref m_sInMaskData);

                // 해피 포인트 적립카드 조회
                string[] saRecvdData = null;
                string sRet = m_cHappyPoint.SearchPayment(new string[] { sInPutType, m_sInMaskData, m_sInEncData, "1", "", m_sAppCardNo }, ref saRecvdData);
                if (sRet != UserCom.RST_OK) return sSchMembNo;

                //m_sInEncData = sInEncData;

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

                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];
                if (sMemInfo != "" && CmUtil.IntParse(sMemInfo.Substring(0, 1)) > 0)
                {
                    sSchMembNo = CmUtil.MidH(sMemInfo, 45, 35).Trim();        // 해피포인트 고객번호
                }
            }
            catch (Exception ex)
            {
                return sSchMembNo;

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

            return sSchMembNo;
        }

        /// <summary>
        /// 카드 번호 암호화
        /// </summary>
        /// <param name="sInData"></param>
        /// <param name="sInMaskData"></param>
        /// <param name="sInEncData"></param>
        /// <returns></returns>
        private string EncryptedCardNo(string sInData, ref string sCardData, ref string sCardNo)
        {
            string sEncData = sInData;

            try
            {
                sEncData = m_cDeviceICReader.GetEncryptedCardNo(sInData).Trim();

                if (CmUtil.MidH(sEncData, 0, 2) == "00")
                {
                    sCardData = CmUtil.MidH(sEncData, 2, 512).Trim();
                    sCardNo = CmUtil.MidH(sEncData, 514, sEncData.Length - 514).Trim();
                }
                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);
                }
            }
            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 sEncData;
        }

        //#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


        //#15058 해피오더 버튼 변경_20180612 start,phj
        #region 해피오더 신규주문 건 표시 상단 패널  
        private void NewHPOrdDisplay()
        {
            //#20180605 해피오더 개선 start - 20180618
            #region 기존
            /*
            try
            {
                int iNewOrdCnt = 0;
                iNewOrdCnt = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0"));
                if (iNewOrdCnt > 99) { iNewOrdCnt = 99; }
                
                if (iNewOrdCnt > 0)
                {
                    //NewHPOrd_Disp.Width = lblIFStatus1.Width;
                    //NewHPOrd_Disp.Left = lblIFStatus1.Left;
                    //NewHPOrd_Disp.Top = 0;// lblIFStatus1.Top;
                    //NewHPOrd_Disp.Height = 50; // lblIFStatus1.Height;

                    PnlNewHPOrd_Disp.Width = lblIFStatus1.Width;
                    PnlNewHPOrd_Disp.Left = lblIFStatus1.Left;
                    PnlNewHPOrd_Disp.Top = 0;// lblIFStatus1.Top;
                    PnlNewHPOrd_Disp.Height = 50; // lblIFStatus1.Height;

                    NewHPOrd_Disp.Visible = true;
                    NewHPOrd_Disp2.Visible = true;

                    NewHPOrd_Disp.Left = 0;
                    NewHPOrd_Disp.Top = 0;
                    NewHPOrd_Disp.Width = PnlNewHPOrd_Disp.Width - (PnlNewHPOrd_Disp.Width / 3);
                    NewHPOrd_Disp.Height = 50;

                    NewHPOrd_Disp2.Left = NewHPOrd_Disp.Width;
                    NewHPOrd_Disp2.Top = 0;
                    NewHPOrd_Disp2.Width = PnlNewHPOrd_Disp.Width - NewHPOrd_Disp.Width;
                    NewHPOrd_Disp2.Height = 50;
                
                    if (CmUtil.IntParse(DateTime.Now.ToString("ss")) % 2 == 0)
                    {
                        NewHPOrd_Disp.Text = "";
                        NewHPOrd_Disp2.Text = "";
                    }
                    else
                    {
                        string sStr = "";
                        string sClose = "";
                        int iStrtNum = 0;
                
                        NewHPOrd_Disp.Text = "";
                        NewHPOrd_Disp.ReadOnly = true;
                
                        NewHPOrd_Disp.SelectionFont = new Font(m_cPosStatus.Base.FONT, 16, FontStyle.Bold);
                        NewHPOrd_Disp.SelectionAlignment = HorizontalAlignment.Right;
                
                        sStr = "해피오더 신규 (" + iNewOrdCnt.ToString() + ")";
                
                        NewHPOrd_Disp.AppendText(sStr);
                        NewHPOrd_Disp.Select(iStrtNum, sStr.Length);
                        NewHPOrd_Disp.SelectionColor = Color.Yellow;
                
                        //sClose = " [닫기]";
                        //NewHPOrd_Disp.AppendText(sClose);
                        //NewHPOrd_Disp.Select(sStr.Length, sClose.Length);
                        //NewHPOrd_Disp.SelectionColor = Color.Black;
                
                        NewHPOrd_Disp.ReadOnly = true;
                        NewHPOrd_Disp.BringToFront();



                        NewHPOrd_Disp2.Text = "";

                        NewHPOrd_Disp2.SelectionFont = new Font(m_cPosStatus.Base.FONT, 16, FontStyle.Bold);
                        NewHPOrd_Disp2.SelectionAlignment = HorizontalAlignment.Left;

                        sClose = " [닫기]";
                        NewHPOrd_Disp2.AppendText(sClose);
                        NewHPOrd_Disp2.Select(0, sClose.Length);
                        NewHPOrd_Disp2.SelectionColor = Color.Black;

                        NewHPOrd_Disp2.ReadOnly = true;
                        NewHPOrd_Disp2.BringToFront();
                    }
                
                    //NewHPOrd_Disp.Visible = true;
                    PnlNewHPOrd_Disp.Visible = true;
                }
                else
                {
                    NewHPOrd_Disp.Visible = false;
                    NewHPOrd_Disp2.Visible = false;

                    //NewHPOrd_Disp.Visible = false;
                    PnlNewHPOrd_Disp.Visible = 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);
            } 
            */
            #endregion

            #region 변경
            try
            {
                // 해피오더 신규주문(일반주문건수 + 배달주문건수 + 예약주문건수)
                int iNewOrdCnt = int.Parse(CmUtil.IsNull(m_cPosStatus.Sale.HappyOrderTotRegCnt, "0"));
                if (iNewOrdCnt > 99) { iNewOrdCnt = 99; }

                if (iNewOrdCnt > 0)
                {
                    if (CmUtil.IntParse(DateTime.Now.ToString("ss")) % 2 == 0)
                    {
                        NewHPOrd_Disp.Text = "";
                        NewHPOrd_Disp2.Text = "";
                    }
                    else
                    {
                        PnlNewHPOrd_Disp.BorderStyle = BorderStyle.None;
                        PnlNewHPOrd_Disp.BackColor = Color.Red;

                        NewHPOrd_Disp.Text = "";
                        NewHPOrd_Disp.Font = new Font(m_cPosStatus.Base.FONT, 15, FontStyle.Bold);
                        NewHPOrd_Disp.TextAlign = ContentAlignment.MiddleCenter;
                        NewHPOrd_Disp.BorderStyle = BorderStyle.None;
                        NewHPOrd_Disp.AutoSize = true;
                        NewHPOrd_Disp.ForeColor = Color.Yellow;
                        NewHPOrd_Disp.BackColor = Color.Red;
                        NewHPOrd_Disp.Text = "해피오더 신규(" + iNewOrdCnt.ToString() + ")";
                        NewHPOrd_Disp.BringToFront();


                        NewHPOrd_Disp2.Text = "";
                        NewHPOrd_Disp2.Font = new Font(m_cPosStatus.Base.FONT, 15, FontStyle.Bold);
                        NewHPOrd_Disp2.TextAlign = ContentAlignment.MiddleCenter;
                        NewHPOrd_Disp2.BorderStyle = BorderStyle.None;
                        NewHPOrd_Disp2.AutoSize = true;
                        NewHPOrd_Disp2.ForeColor = Color.Black;
                        NewHPOrd_Disp2.BackColor = Color.Red;
                        NewHPOrd_Disp2.Text = "[닫기]";
                        NewHPOrd_Disp2.BringToFront();

                        int iWidth = NewHPOrd_Disp.Width + NewHPOrd_Disp2.Width;
                        NewHPOrd_Disp.Left = (PnlNewHPOrd_Disp.Width - iWidth) / 2;
                        NewHPOrd_Disp2.Left = NewHPOrd_Disp.Left + NewHPOrd_Disp.Width;

                        int iFill = 3;
                        NewHPOrd_Disp.Top = ((PnlNewHPOrd_Disp.Height - NewHPOrd_Disp.Height) / 2) - iFill;
                        NewHPOrd_Disp2.Top = NewHPOrd_Disp.Top;
                    }


                    NewHPOrd_Disp.Visible = true;
                    NewHPOrd_Disp2.Visible = true;
                    PnlNewHPOrd_Disp.Visible = true;
                }
                else
                {
                    NewHPOrd_Disp.Visible = false;
                    NewHPOrd_Disp2.Visible = false;
                    PnlNewHPOrd_Disp.Visible = 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);
            }
            #endregion
            //#20180605 해피오더 개선 end - 20180618
        }

        private void NewHPOrd_Disp_Click(object sender, EventArgs e)
        {
            try
            {
                //#15626 PB 평택법조타운 - 포스사용중 '고객센터로 연락주세요'팝업창 뜨는 증상 start
                //변경
                // 상품 등록 중일 경우 빠져 나간다.
                ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
                if (alSaleItem.Count > 0)
                {
                    WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0021));
                    return;
                }
                //#15626 PB 평택법조타운 - 포스사용중 '고객센터로 연락주세요'팝업창 뜨는 증상 end

                iCount = 0;
                bSaleMain = false;

                NewHPOrd_Disp.Visible = false;
                NewHPOrd_Disp2.Visible = false;
                PnlNewHPOrd_Disp.Visible = false;

                //#20180615 해피오더 팝업 수정 start
                //기존
                //WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01", "" });
                //변경
                WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01", "C" });
                //#20180615 해피오더 팝업 수정 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 NewHPOrd_Disp2_Click(object sender, EventArgs e)
        {
            try
            {
                iCount = 0;
                bSaleMain = false;

                NewHPOrd_Disp.Visible = false;
                NewHPOrd_Disp2.Visible = false;
                PnlNewHPOrd_Disp.Visible = 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);
            }
        }

        #endregion
        //#15058 해피오더 버튼 변경_20180612 end,phj

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

        private void picVip_Paint(object sender, PaintEventArgs e)
        {
            /*
            Image myBitmapTemp;

            // Create a Bitmap object from an image file.
            Bitmap myBitmap = new Bitmap(BaseCom.NxImgPath + "crown12.png");

            // Draw myBitmap to the screen.
            //e.Graphics.DrawImage(myBitmap, 0, 0, myBitmap.Width, myBitmap.Height);

            // Get the color of a background pixel.
            Color backColor = myBitmap.GetPixel(5, 5);

            // Make backColor transparent for myBitmap.
            myBitmap.MakeTransparent(backColor);

            myBitmapTemp = (Image)myBitmap;

                // Draw the transparent bitmap to the screen.
            e.Graphics.DrawImage(myBitmapTemp, 0, 0, myBitmap.Width, myBitmap.Height);
            */
        }

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

        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
        #region 해피오더 추가재고 실시간 알람 (10분마다 1분동안 보임)
        private void HappyOrderInventoryAlram()
        {
            if (PosMstManager.GetPosOption(POS_OPTION.OPT518) != "1") return;

            try
            {
                // Y: 미등록 재고존재 / N: 미등록 재고없음 
                if (m_cPosStatus.Sale.HappyOrderInventoryYN == "Y")
                {
                    if (CmUtil.IntParse(DateTime.Now.ToString("ss")) % 2 == 0)
                    {
                        lb_HPOInventoryAlram.Text = "";
                        lb_HPOInventoryAlram2.Text = "";
                    }
                    else
                    {
                        Pnl_HPOInventoryAlram.BorderStyle = BorderStyle.None;
                        Pnl_HPOInventoryAlram.BackColor = Color.Red;

                        lb_HPOInventoryAlram.Text = "";
                        lb_HPOInventoryAlram.Font = new Font(m_cPosStatus.Base.FONT, 15, FontStyle.Bold);
                        lb_HPOInventoryAlram.TextAlign = ContentAlignment.MiddleCenter;
                        lb_HPOInventoryAlram.BorderStyle = BorderStyle.None;
                        lb_HPOInventoryAlram.AutoSize = true;
                        lb_HPOInventoryAlram.ForeColor = Color.Yellow;
                        lb_HPOInventoryAlram.BackColor = Color.Red;
                        lb_HPOInventoryAlram.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1179); //20180821
                        lb_HPOInventoryAlram.BringToFront();


                        lb_HPOInventoryAlram2.Text = "";
                        lb_HPOInventoryAlram2.Font = new Font(m_cPosStatus.Base.FONT, 15, FontStyle.Bold);
                        lb_HPOInventoryAlram2.TextAlign = ContentAlignment.MiddleCenter;
                        lb_HPOInventoryAlram2.BorderStyle = BorderStyle.None;
                        lb_HPOInventoryAlram2.AutoSize = true;
                        lb_HPOInventoryAlram2.ForeColor = Color.Black;
                        lb_HPOInventoryAlram2.BackColor = Color.Red;
                        lb_HPOInventoryAlram2.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1180); //20180821
                        lb_HPOInventoryAlram2.BringToFront();

                        int iWidth = lb_HPOInventoryAlram.Width + lb_HPOInventoryAlram2.Width;
                        lb_HPOInventoryAlram.Left = (Pnl_HPOInventoryAlram.Width - iWidth) / 2;
                        lb_HPOInventoryAlram2.Left = lb_HPOInventoryAlram.Left + lb_HPOInventoryAlram.Width;

                        int iFill = 3;
                        lb_HPOInventoryAlram.Top = ((Pnl_HPOInventoryAlram.Height - lb_HPOInventoryAlram.Height) / 2) - iFill;
                        lb_HPOInventoryAlram2.Top = lb_HPOInventoryAlram.Top;
                    }

                    HappyOrderInventoryAlram_StatChange(true);
                }
                else
                {
                    HappyOrderInventoryAlram_StatChange(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);
            }
        }
        #endregion
        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end

        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
        #region 해피오더 추가재고 실시간 알람 클릭
        private void lb_HPOInventoryAlram_Click(object sender, EventArgs e)
        {
            try
            {
                HappyOrderInventoryAlram_StatChange(false);

                if (sender.GetType().Equals(typeof(Cosmos.UI.CsmLabel)))
                {
                    if (((Cosmos.UI.CsmLabel)sender).Name == "lb_HPOInventoryAlram")
                    {
                        WinBasic.ShowWebPos(PosKey.MENU_KEY.HPO_INVENTORY_ALRAM);
                    }
                }
                else if (sender.GetType().Equals(typeof(System.Windows.Forms.Panel)))
                {
                    if (((System.Windows.Forms.Panel)sender).Name == "Pnl_HPOInventoryAlram")
                    {
                        WinBasic.ShowWebPos(PosKey.MENU_KEY.HPO_INVENTORY_ALRAM);
                    }
                }
            }
            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 해피오더 추가재고 실시간 알람 클릭
        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end

        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
        #region 해피오더 추가재고 실시간 알람 초기화
        private void HappyOrderInventoryAlram_StatChange(bool bStat)
        {
            try
            {

                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start - #16368
                //기존
                /*
                if (bStat == true)
                {
                    bInventoryDispStat = true;
                    lb_HPOInventoryAlram.Visible = true;
                    lb_HPOInventoryAlram2.Visible = true;
                    Pnl_HPOInventoryAlram.Visible = true;
                }
                else
                {
                    iInventoryDispCnt = 0;
                    bInventoryDispStat = false;
                    lb_HPOInventoryAlram.Visible = false;
                    lb_HPOInventoryAlram2.Visible = false;
                    Pnl_HPOInventoryAlram.Visible = false;
                }
                */

                //변경
                if (bStat == true)
                {
                    lb_HPOInventoryAlram.Visible = true;
                    lb_HPOInventoryAlram2.Visible = true;
                    Pnl_HPOInventoryAlram.Visible = true;
                }
                else
                {
                    bInventoryCancel = true;
                    lb_HPOInventoryAlram.Visible = false;
                    lb_HPOInventoryAlram2.Visible = false;
                    Pnl_HPOInventoryAlram.Visible = false;
                }
                //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end - #16368

                
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                            System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
                                            System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
                                            "HappyOrderInventoryAlram [" + bStat + "]" + ex.Message);
            }
        }
        #endregion 해피오더 추가재고 실시간 알람 초기화
        //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end

        //#16577 결제창 내부 봉투 추가 기능 도입 start
        private void BtnAddBag_Click(object sender, EventArgs e)
        {
            try
            {
                string sRet = UserCom.RST_ERR;

                //#16577 결제창 내부 봉투 추가 기능 도입 start, 20180920
                DataTable dtData = new DataTable();
                //#16577 결제창 내부 봉투 추가 기능 도입 end, 20180920

                //bool bRet = true;

                // 결제 건이 있는지 체크
                // 결제 내역 받아 오기
                ArrayList alTrPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);

                foreach (Column.TR_PAYMENT.DATA cPayItem in alTrPayItem)
                {
                    // 취소시 제외
                    if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;

                    // 결제 건
                    if (cPayItem.PAY_DTL_CD_05 == PosConst.PAY_DC_TYPE.PAY)
                    {
                        WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0801));
                        return;
                    }
                }

                //봉투창 표시
                sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ADD_BAG });

                if (sRet == UserCom.RST_ERR)
                {
                    return;
                }

                //봉투 선택 한 경우 입력 처리
                if (sRet != UserCom.RST_ERR)
                {
                    string[] aParam = sRet.Split(new string[] { "^" }, StringSplitOptions.None);
                    if (aParam.Length > 0)
                    {
                        for (int iRow = 0; iRow < aParam.Length; iRow++)
                        {
                            if (string.IsNullOrEmpty(aParam[iRow]) == false)
                            {
                                // 상품 등록 처리
                                m_cSaleMainProc.RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(m_cPosStatus.Base.SubShopNo, 10) + aParam[iRow], "");
                            }
                        }
                    }

                    //#16577 결제창 내부 봉투 추가 기능 도입 start, 20180920
                    // 상품 판매가 계산
                    m_cPluService.ItemAmountExeccute(true, true);

                    DisplayItem(1, false);
                    //#16577 결제창 내부 봉투 추가 기능 도입 end, 20180920
                }

                //결제등록 정보 화면 표시
                DisplayPayment();

                /*
                if (bRet == false)
                {
                    WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0803));
                }
                else
                {
                    //WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0802));
                }
                */
            }
            catch (Exception ex)
            {
                WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
                                            System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
                                            System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
                                            ex.Message);
            }
        }
        //#16577 결제창 내부 봉투 추가 기능 도입 end

        //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
        #region 해피포인트 임직원 여부 조회
        /// <summary>
        /// 해피포인트 임직원 여부 조회
        /// </summary>
        /// <param name="sInPutType"></param>
        /// <param name="sInCardNo"></param>
        private string SchHappyPointEmpInfo(string sInPutType, string sInCardNo)
        {
            string sSchEmpInfo = "";

            try
            {
                m_sInPutType = "";
                m_sInMaskData = "";
                m_sInEncData = "";
                m_sServiceCode = "";
                m_sAppCardNo = "";

                m_sInPutType = sInPutType;
                m_sAppCardNo = sInCardNo;


                // 해피포인트 카드만 자동등록 처리
                if (sInCardNo.StartsWith(PosConst.HP_CARD_PRIFIX) == false) return sSchEmpInfo;

                IPaymentExpUs m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);

                //암호화
                EncryptedCardNo(m_sAppCardNo, ref m_sInEncData, ref m_sInMaskData);

                // 해피 포인트 적립카드 조회
                string[] saRecvdData = null;
                string sRet = m_cHappyPoint.SearchPayment(new string[] { sInPutType, m_sInMaskData, m_sInEncData, "1", "", m_sAppCardNo }, ref saRecvdData);
                if (sRet != UserCom.RST_OK) return sSchEmpInfo;

                //m_sInEncData = sInEncData;

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

                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);

                // 고객정보 중에서 첫번째 카드 선택
                sSchEmpInfo = aIrtRsp[Column.POINT_ADD_INFO_SEARCH.SEQ.pointCARDGBCD].Trim();
            }
            catch (Exception ex)
            {
                return sSchEmpInfo;

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

            return sSchEmpInfo;
        }
        #endregion 해피포인트 임직원 여부 조회
        //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end

    }
}