using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System;
using System.Drawing;

/*-----------------------------------------------------------------------------------------------*/
// 설      명 : 인터페이스 선언
// 작  성  자 : 
// 변경  이력 : 
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Common
{
    #region 서비스 기본 인터페이스
    /// <summary>
    /// 서비스 기본 인터페이스
    /// </summary>
    public interface IServiceUs
    {
        /// <summary>
        /// 서비스 실행
        /// </summary>
        string Execute(string[] aParam);
    }
    #endregion 

    #region 정산지 및 점검지 생성
    /// <summary>
    /// 정산지 및 점검지 생성
    /// </summary>
    public interface IMakeAccADMT
    {
        /// <summary>
        /// 정산지 및 점검지 생성
        /// </summary>
        /// <param name="sKind"></param>
        /// <param name="sSaleDate"></param>
        /// <param name="dtReturn"></param>
        /// <param name="sSimplePrint"></param>
        /// <returns></returns>
        string SaveAccADMT(string sKind, string sSaleDate, ref DataTable dtReturn, string sSimplePrint);
    }
    #endregion 

    #region 데이터서비스 인터페이스
    /// <summary>
    /// 데이터서비스 인터페이스
    /// </summary>
    public interface IDataServiceUs
    {
        /// <summary>
        /// 서비스 실행
        /// </summary>
        string Execute(string[] aParam);

        /// <summary>
        /// 데이터 획득
        /// </summary>
        object GetData(string[] aParam);

        /// <summary>
        /// 데이터 설정
        /// </summary>
        string SetData(object oParam);
    }
    #endregion 

    #region 테이블서비스 인터페이스
    /// <summary>
    /// 테이블서비스 인터페이스
    /// </summary>
    public interface ITableUs
    {
        bool DBConnection();

        string SelectTable(string[] aParam, out DataTable dtData);

        void SetTableInfo(DataRow drData, ref Column.MST_TABLE.TABLE_DATA cTable);

        string SelectTableOrderItem(string[] aParam, out DataTable dtData);

        string SelectFloor(string[] aParam, out DataTable dtData);

        string SelectTableSaleInfo(out DataTable dtData);

        string UpdateTableCompletePayment(string[] aParam);

        string UpdateTableUse(string pFloorCd, string pTableNo, string pPosNo, string pUseFlag, string pFirstOrderTm, int pCustCount, double pOrderAmount, bool groupCheck = false);

        string SelectMenuOrder();

        string CompleteMenuOrder();

        string SelectStoreNotice(string[] aParam, out DataTable dtData);

        string RegisterStoreNotice(string sTitle, string sContents);

        string DeleteStoreNotice(string[] aParam);

        //string UpdateTableJoin(string sFloorCd, string sTableNo, string sTableJoinFloorCd, string sTableJoinTableNo);

        string CompleteSaleOrder();

        //string UpdateTableJoinClear(string sFloorCd, string sTableNo);

        string UpdateTableAdd(string sFromFloorCd, string sFromTableNo, string sToFloorCd, string sToTableNo);

        string UpdateTableMove(string sFromFloorCd, string sFromTableNo, string sToFloorCd, string sToTableNo);

        string UpdateMenuItemMove();

        string UpdateKtchOrderMessage(string sMsgId, int iItemRow, string sMsg1, string sMsg2, string sMsg3);

        string SelectFloorAndTableName(string sFloorCd, string sTableNo, out DataTable dtData);
        /// <summary>
        /// 좌석메모 조회 
        /// </summary>
        /// <param name="sFloorCd"></param>
        /// <param name="sTableNo"></param>
        /// <param name="dtData"></param>
        /// <returns></returns>
        string SelectKtchOrderMessage(string sFloorCd, string sTableNo, out DataTable dtData);
        /// <summary>
        /// 테이블 주문상품의 주방장치코드 갯수 가져오기
        /// </summary>
        /// <param name="orderFlag">주문상태 (0:주문중, 1:주문완료, 2:주문수정)</param>
        /// <param name="floorCd"></param>
        /// <param name="tableNo"></param>
        /// <param name="itemCode">서브매장코드 + 상품코드</param>
        /// <returns></returns>
        int GetKtchDiveceCount(string orderFlag, string floorCd, string tableNo, string itemCode = "");
        /// <summary>
        /// 테이블그룹처리 (다중선택)
        /// </summary>
        /// <param name="selectedTables"></param>
        /// <returns></returns>
        string UpdateTableGroup(string selectedTables);

        /// <summary>
        /// 데이블그룹해제 (전체해제)
        /// </summary>
        /// <param name="opGroupFloorCd"></param>
        /// <param name="opGroupTableNo"></param>
        /// <returns></returns>
        string UpdateTableGroupClear(string opGroupFloorCd, string opGroupTableNo);
        /// <summary>
        /// 층 마스터 데이터베이스 저장 (local)
        /// </summary>
        /// <param name="lstMstFloor"></param>
        /// <returns></returns>
        string FloorMasterSave(List<Column.MST_FLOOR.FLOOR_DATA> lstMstFloor);
        /// <summary>
        /// 테이블 마스터 데이터베이스 저장 (local)
        /// </summary>
        /// <param name="lstMstTable"></param>
        /// <returns></returns>
        string TableMasterSave(List<Column.MST_TABLE.TABLE_DATA> lstMstTable);
        /// <summary>
        /// 층/테이블 마스터 데이터베이스 저장 (local)
        /// </summary>
        /// <param name="lstMstFloor"></param>
        /// <param name="lstMstTable"></param>
        /// <returns></returns>
        string TableMasterSave(List<Column.MST_FLOOR.FLOOR_DATA> lstMstFloor, List<Column.MST_TABLE.TABLE_DATA> lstMstTable);
        /// <summary>
        /// 층/테이블 마스터 백업 (to server)
        /// </summary>
        /// <returns></returns>
        string TableMasterBackup(List<Column.MST_FLOOR.FLOOR_DATA> lstMstFloor, List<Column.MST_TABLE.TABLE_DATA> lstMstTable);
        /// <summary>
        /// 층/테이블 마스터 복원 (from server)
        /// </summary>
        /// <returns></returns>
        string TableMasterRestore();
        /// <summary>
        /// 연습모드 테이블 생성
        /// </summary>
        /// <param name="checkExist">존재체크여부</param>
        /// <returns></returns>
        bool CreateTrainingTable(bool checkExist = true);
        /// <summary>
        /// 테이블주문내역 건수 
        /// </summary>
        /// <param name="floorCd"></param>
        /// <param name="tableNo"></param>
        /// <returns></returns>
        int GetOrderDataCount(string floorCd = "", string tableNo = "");
        /// <summary>
        /// 주문번호 자동 채번 (후불POS 전용)
        /// </summary>
        /// <returns></returns>
        string GetOrderNoForDb();
        /// <summary>
        /// 주문차수 채번 (후불POS 전용)
        /// </summary>
        /// <param name="floorCd"></param>
        /// <param name="tableNo"></param>
        /// <returns></returns>
        string GetOrderSeq(string floorCd, string tableNo);
    }
    #endregion 

    #region 예약서비스 인터페이스
    /// <summary>
    /// 예약서비스 인터페이스
    /// </summary>
    public interface IReservationUs
    {
        /// <summary>
        /// 예약 데이터 조회
        /// </summary>
        /// <param name="aPara">예약정보</param>
        /// <param name="dtData">조회결과</param>
        /// <returns></returns>
        string SelectData(string[] aPara, out DataTable dtData);

        /// <summary>
        /// 예약등록
        /// </summary>
        /// <param name="reserveDate"></param>
        /// <param name="reserveTime"></param>
        /// <param name="cashierNm"></param>
        /// <param name="custTelNo"></param>
        /// <param name="alarmYN"></param>
        /// <param name="alarmTM"></param>
        /// <returns></returns>
        string InsertData(string reserveDate, string reserveTime, string cashierNm, string custTelNo, string note, string alarmYN, string alarmTM);
        /// <summary>
        /// 예약수정
        /// </summary>
        /// <param name="reserveNo"></param>
        /// <param name="reserveDate"></param>
        /// <param name="reserveTime"></param>
        /// <param name="cashierNm"></param>
        /// <param name="custTelNo"></param>
        /// <param name="note"></param>
        /// <param name="alarmYN"></param>
        /// <param name="alarmTM"></param>
        /// <returns></returns>
        string UpdateData(string reserveNo, string reserveDate, string reserveTime, string cashierNm, string custTelNo, string note, string alarmYN, string alarmTM);
        /// <summary>
        /// 알람확인 
        /// </summary>
        /// <param name="reserveNo"></param>
        /// <returns></returns>
        string UpdateAlarmComfrim(string reserveNo);
    }
    #endregion 

    #region 결제서비스 기본 인터페이스
    /// <summary>
    /// 결제서비스 기본 인터페이스
    /// </summary>
    public interface IPaymentUs
    {
        /// <summary>
        /// 결제 조회
        /// </summary>
        string SearchPayment(string[] aParam, ref string[] aRet);

        /// <summary>
        /// 결제 정보 획득
        /// </summary>
        object GetPayment(string[] aParam);

        /// <summary>
        /// 결제 등록
        /// </summary>
        string SetPayment(string[] aParam);

        /// <summary>
        /// 결제 취소
        /// </summary>
        string CancelPayment(string[] aParam);

        /// <summary>
        /// 결제 반품(자동반품)
        /// </summary>
        string RefundPayment(string[] aParam);

        /// <summary>
        /// 결제 수기 등록(임의등록)
        /// </summary>
        string SetMenualPayment(string[] aParam);

    }
    #endregion 

    #region 결제서비스 확장 인터페이스
    /// <summary>
    /// 결제서비스 확장 인터페이스
    /// </summary>
    public interface IPaymentExpUs
    {
        /// <summary>
        /// 결제 조회
        /// </summary>
        string SearchPayment(string[] aParam, ref string[] aRet);

        /// <summary>
        /// 결제 정보 획득
        /// </summary>
        object GetPayment(string[] aParam);

        /// <summary>
        /// 결제 등록
        /// </summary>
        string SetPayment(string[] aParam);

        /// <summary>
        /// 결제 취소
        /// </summary>
        string CancelPayment(string[] aParam);

        /// <summary>
        /// 결제 반품(자동반품)
        /// </summary>
        string RefundPayment(string[] aParam);

        /// <summary>
        /// 결제 수기 등록(임의등록)
        /// </summary>
        string SetMenualPayment(string[] aParam);

        /// <summary>
        /// 결제 확정(거래완료시 확정)
        /// </summary>
        string CompletePayment(string[] aParam);

        /// <summary>
        /// 제휴(기타)결제 등록
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string SetCoopPayment(string[] aParam);

        /// <summary>
        /// 스마일페이 해피포인트 등록
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string SetSmilePayment(string[] aParam);

        /// <summary>
        /// IC모드 해피포인트 등록
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string SetCoopPaymentIC(string[] aParam);

        //#20180329, 해피기프트(신) 자동적립 수정 Start, lsr
        /// <summary>
        /// 해피기프트(신) 해피포인트 등록
        /// </summary>
        /// <returns></returns>
        string SetHPGiftPayment();
        //#20180329, 해피기프트(신) 자동적립 수정 End, lsr

    }
    #endregion 

    #region 판매 등록 인터페이스
    /// <summary>
    /// 판매 등록 인터페이스
    /// </summary>
    public interface ISalePluItemUs
    {
        /// <summary>
        /// 세트 메뉴 할인 마스터 로딩 처리
        /// </summary>
        void LoadSetMenuDisMaster();
        /*
        /// <summary>
        /// 2019-04-11 - 1997fx11 : 상품 등록 처리
        /// </summary>
        /// <param name="_basketItem"></param>
        /// <returns></returns>
        string SetItemCode(object _basketItem);
        */
        /// <summary>
        /// 상품 등록 처리
        /// </summary>
        /// <param name="sSelRow">선택행</param>
        /// <param name="sInPutTypeCode">(0:수입력, 1:메뉴, 2:스켄) + (메뉴코드,스캔코드)</param>
        /// <param name="sInPutData">입력데이터</param>
        /// <returns></returns>
        string SetItemCode(string sSelRow, string sInPutTypeCode, string sInPutData);
        /// <summary>
        /// 상품 등록 처리
        /// </summary>
        /// <param name="sSelRow">선택행</param>
        /// <param name="sInPutType">(0:수입력, 1:메뉴, 2:스켄, 3:플레이버</param>
        /// <param name="sSubStoreNo">서브점포코드</param>
        /// <param name="sItemCode">메뉴코드</param>
        /// <param name="sScanCode">스캔코드</param>
        /// <param name="sInPutData">입력데이터(수량)</param>
        /// <returns></returns>
        string SetItemCode(string sSelRow, string sInPutType, string sSubStoreNo, string sItemCode, string sScanCode, string sInPutData);

        ///// <summary>
        ///// 상품 마스터 조회
        ///// </summary>
        ///// <param name="sSubStoreNo"></param>
        ///// <param name="sItemCode"></param>
        ///// <param name="sScanCode"></param>
        ///// <returns></returns>
        //DataTable SearchItemCode(string sSubStoreNo, string sItemCode, string sScanCode);
        /// <summary>
        /// 상품 지정 취소 처리
        /// </summary>
        /// <param name="sSelRow"></param>
        /// <returns></returns>
        string SetCancelItem(string sSelRow);
        /// <summary>
        /// 메뉴키 마스터 조회
        /// </summary>
        /// <param name="sMstName"></param>
        /// <returns></returns>
        DataTable SearchMenuMaster(string sMstName);
        /// <summary>
        /// 메뉴 구성 마스터 조회
        /// </summary>
        /// <param name="sMstName"></param>
        /// <returns></returns>
        DataTable SearchMenuMaster(string sMstName, string sPara1, string sPara2);
        /// <summary>
        /// 상품 수량 변경 처리
        /// </summary>
        /// <param name="sSelRow"></param>
        /// <param name="sNewQty"></param>
        /// <returns></returns>
        string SetQtyChangeItem(string sSelRow, string sNewQty);

        /// <summary>
        /// 단품 할인 적용
        /// </summary>
        /// <param name="sSelRow"></param>
        /// <param name="sDcType"></param>
        /// <param name="sVaule"></param>
        /// <returns></returns>
        string SetDcItem(string sSelRow, string sDcType, string sDcCod, string sVaule);

        /// <summary>
        /// 단품 No Tax
        /// </summary>
        /// <param name="sSelRow"></param>
        /// <returns></returns>
        string SetNoTaxItem(string sSelRow);

        /// <summary>
        /// 상품 판매가 재계산
        /// </summary>
        string ItemAmountExeccute(bool bEvtExec, bool bTaxExec);

        /// <summary>
        /// 세트메뉴 구성상품 변경
        /// </summary>
        /// <param name="sSelRow"></param>
        /// <param name="sMenuCode"></param>
        /// <param name="sMenuName"></param>
        /// <param name="sMenuPrc"></param>
        /// <returns></returns>
        string SetSetMenuItemChange(string sSelRow, string sMenuCode, string sMenuName, string sMenuPrc);

        /// <summary>
        /// 상품 부가메뉴 => 부가메뉴 변경
        /// </summary>
        /// <param name="sSelRow"></param>
        /// <param name="sMenuCode"></param>
        /// <param name="sMenuKeyDiv"></param>
        /// <returns></returns>
        string SetSubMenuItemChange(string sSelRow, string sMenuCode, string sMenuKeyDiv);
        /// <summary>
        /// 상품 부가메뉴 => 부가메뉴구분(속성) 등록 
        /// </summary>
        /// <param name="sMemoCode"></param>
        /// <param name="sMemoName"></param>
        /// <returns></returns>
        string SetSubMenuMemoItem(string sMemoCode, string sMemoName, string sInPutData);
        /// <summary>
        /// 상품 부가메뉴 => 부가메뉴구분(속성) 변경
        /// </summary>
        /// <param name="sMemoCode"></param>
        /// <param name="sMemoName"></param>
        /// <returns></returns>
        string SetSubMenuMemoItemChange(string sSelRow, string sMemoCode, string sMemoName);

        /// <summary>
        /// 상품마스터 이미지명 업데이터
        /// </summary>
        /// <returns></returns>
        void UpdateMstItemImageName();

        /// <summary>
        /// 상품아이템 할인 전체 취소
        /// </summary>
        /// <returns></returns>
        //#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 start
        //기존
        //bool ItemDcAllClear(bool bCampaignClear, bool bEtcCodeClear = false);
        //변경
        bool ItemDcAllClear(bool bCampaignClear, bool bEtcCodeClear = false, bool bNorDcClear = true);
        //#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 end

        //#Rhee, 20180130 단품 할인 전체 취소 추가 Start
        /// <summary>
        /// 단품 할인 적용 전체 취소
        /// </summary>
        /// <param name="sDcDiv"></param>
        /// <param name="sDcType"></param>
        /// <returns></returns>
        string SetDcCancelItem(string sDcDiv, string sDcType);
        //#Rhee, 20180130 단품 할인 전체 취소 추가 End

        //#Rhee, 20180212 전체상품 No Tax 추가 Start
        /// <summary>
        /// 전체상품 No Tax
        /// </summary>
        /// <returns></returns>
        string SetAllNoTaxItem();
        //#Rhee, 20180212 전체상품 No Tax 추가 End
    }
    #endregion 

    #region 거래해더 데이터 관리
    /// <summary>
    /// 거래해더 데이터 관리 
    /// </summary>
    public interface IDataProcessUs
    {
        /// <summary>
        /// 거래(TRAN) 합계금액 재계산 처리
        /// </summary>
        void UpdateTranAmount();

        /// <summary>
        /// 상품행별 영수 금액 재계산 처리
        /// </summary>
        void UpdatePluItemAmount(Column.TR_PLU.DATA cPluItem);

        /// <summary>
        /// 거래(TRAN) 상품 합계금액 재계산 처리
        /// </summary>
        void UpdatePluAmount();
        void UpdatePluAmount(bool bTaxExec);

        /// <summary>
        /// 거래(TRAN) 결제 합계금액 재계산 처리
        /// </summary>
        void UpdatePayAmount();

        /// <summary>
        /// 모든 거래데이터 삭제
        /// </summary>
        bool DeleteTranItem();

        /// <summary>
        /// 거래 완료 후 처리
        /// </summary>
        bool TranComplete();

        /// <summary>
        ///  거래해더 초기화
        /// </summary>
        bool InitTranHeader();

        /// <summary>
        /// 트란해더 필수정보 재설정
        /// </summary>
        void SetTranBaseToHead();

        /// <summary>
        /// 거래 번호 증가
        /// </summary>
        /// <param name="bMsgSeq">전문순번증가여부</param>
        /// <param name="bRegNo">등록번호증가여부</param>
        /// <param name="bTradeNo">거래번호증가여부</param>
        /// <returns></returns>
        bool SetMsgNoInc(bool bMsgSeq, bool bRegNo, bool bTradeNo);
        bool SetMsgNoInc(bool bMsgSeq, bool bRegNo, bool bTradeNo, string sTranKind);

        /// <summary>
        /// 현금 영수증 금액 계산
        /// </summary>
        /// <returns></returns>
        double GetCashAmt();

        /// <summary>
        /// 할인 금액 획득
        /// </summary>
        /// <param name="bPosDc"></param>
        /// <param name="bCpi"></param>
        /// <param name="bCoop"></param>
        /// <param name="bPoint"></param>
        /// <param name="bCpn"></param>
        /// <param name="bEmp"></param>
        /// <param name="bSet"></param>
        /// <param name="bEtc"></param>
        /// <param name="bExcep"></param>
        /// <returns></returns>
        double GetPluDiscountAmount(bool bPosDc, bool bCpi, bool bCoop, bool bPoint, bool bCpn, bool bEmp, bool bSet, bool bEtc, bool bExcep, int iRow);

        /// <summary>
        /// 할인, 적립 대상 금액 획득
        /// </summary>
        /// <param name="sMenuKey"></param>
        /// <returns></returns>
        double GetPluTagetAmount(string sMenuKey);
        double GetPluTagetAmount(string sMenuKey, bool bAddSave);

        /// <summary>
        /// 해당 상품이 할인 적립 가능한지 체크
        /// </summary>
        /// <param name="sMenuKey"></param>
        /// <returns>true:가능, false:불가</returns>
        bool CheckPluDiscountAble(string sMenuKey, Column.TR_PLU.DATA cPluItem);

        /// <summary>
        /// 상품 부가세 계산 처리
        /// </summary>
        /// <returns></returns>
        bool ItemVatProc();

        /// <summary>
        /// 문자열의 숫자(Int)로 변환
        /// </summary>
        /// <param name="sValue"></param>
        /// <returns></returns>
        int IntParse(string sValue);
        /// <summary>
        /// 문자열의 숫자(Long)로 변환
        /// </summary>
        /// <param name="sValue"></param>
        /// <returns></returns>
        long LongParse(string sValue);
        /// <summary>
        /// 문자열의 숫자(Double)로 변환
        /// </summary>
        /// <param name="sValue"></param>
        /// <returns></returns>
        double DoubleParse(string sValue);

        /// <summary>
        /// 전체 금액 대비 결제 금액 부가세 구하기
        /// </summary>
        /// <param name="dPayAmt"></param>
        /// <returns></returns>
        double GetPaymentAmtVAT(double dPayAmt);
    }
    #endregion 

    #region 공통함수 인터페이스
    /// <summary>
    /// 공통함수 인터페이스
    /// </summary>
    public interface IDataCommonUs
    {
        //#20181016 메모리 사용량 로그남기기 start
        /// <summary>
        /// 메모리 사용량 체크하여 로그남기기
        /// </summary>
        void MemoryCheckLog();
        //#20181016 메모리 사용량 로그남기기 end

        //#20180821 해피포인트 고객이름 마스킹 start
        //해피포인트 고객이름 마스킹 
        string NameMasking(string sName);
        //#20180821 해피포인트 고객이름 마스킹 end

        /// <summary>
        /// 상품 마스터 조회
        /// </summary>
        /// <param name="sSubStoreNo"></param>
        /// <param name="sItemCode"></param>
        /// <param name="sScanCode"></param>
        /// <param name="TimeStampBarCodeYn"></param>
        /// <returns></returns>
        //#20171018 상품등록 유통기한 체크하기 start, phj
        //기존
        //DataTable SearchItemCode(string sSubStoreNo, string sItemCode, string sScanCode);
        //변경    
        DataTable SearchItemCode(string sSubStoreNo, string sItemCode, string sScanCode, bool TimeStampBarCodeYn = false);
        //#20171018 상품등록 유통기한 체크하기 end, phj


        /// <summary>
        /// 2019-05-08 - 1997fx11 : NHS 부가옵션을 조회
        /// </summary>
        /// <param name="sSubStoreNo"></param>
        /// <param name="sSubItemCode"></param>
        /// <returns></returns>
        DataTable SearchNHSOption(string sSubStoreNo, string sSubItemCode);

        /// <summary>
        /// 상품 마스터 조회(상품코드로 조회)
        /// </summary>
        /// <param name="sSubStoreNo">서브점포</param>
        /// <param name="sItemCode">상품코드</param>
        /// <returns></returns>
        DataTable SeletItemMstToItemCode(string sSubStoreNo, string sItemCode);

        //#15945 해피오더 자동주문 상세기능 start
        /// <summary>
        /// 해피오더자동출하상품체크
        /// </summary>
        DataTable AutomaticShipmentItemCheck(string sSubStoreNo, string sItemCode);
        //#15945 해피오더 자동주문 상세기능 end

        /// <summary>
        /// 상품 마스터 조회(스캔코드로 조회)
        /// </summary>
        /// <param name="sSubStoreNo">서브점포</param>
        /// <param name="sScanCode">스캔코드</param>
        /// <returns></returns>
        DataTable SeletItemMstToScanCode(string sSubStoreNo, string sScanCode);
        DataTable SeletItemMstNmToScanCode(string sSubStoreNo, string sScanCode);
        /// <summary>
        /// 상품 마스터 조회(선불카드 금액으로 상품 검색)
        /// </summary>
        /// <param name="sSubStoreNo"></param>
        /// <param name="nSaleAmt"></param>
        /// <returns></returns>
        DataTable SeletItemMst_PrePaidCard_Sale(string sSubStoreNo, double nSaleAmt);

        /// <summary>
        /// 기능키 그룹 조회
        /// </summary>
        /// <param name="sFuncGroupID">기능그룹ID</param>
        /// <returns></returns>
        DataTable SeletFuncKeyGroup(string sFuncGroupID);

        /// <summary>
        /// 기능키 조회
        /// </summary>
        /// <param name="sFuncID"></param>
        /// <returns></returns>
        DataTable SeletFuncKey(string sFuncID);

        //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
        /// <summary>
        /// 기능키 배치 여부 조회
        /// </summary>
        /// <param name="sFuncID"></param>
        /// <returns></returns>
        DataTable SeletFuncKeyGroupArr(string sFuncID);
        //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end

        /// <summary>
        /// 공통코드 조회
        /// </summary>
        /// <param name="sCommCodeGroup">공통그룹코드(PosCont.COMMON_CODE_GROUP)</param>
        /// <param name="sCommCode">공통코드</param>
        /// <returns></returns>
        DataTable SeletCommonCode(string sCommCodeGroup, string sCommCode);

        /// <summary>
        /// 상품부가세율 구하기
        /// </summary>
        /// <param name="sTaxRateCode"></param>
        /// <returns></returns>
        double ItemTaxRate(string sTaxRateCode);

        /// <summary>
        /// MOT 마스터 조회
        /// </summary>
        /// <param name="sTableName"></param>
        /// <param name="sMsgType"></param>
        /// <param name="sCnntID"></param>
        /// <param name="iSeqNo"></param>
        /// <returns></returns>
        DataTable SelectMOT(string sTableName, string sMsgType, string sCnntID, string sSeqNo);

        /// <summary>
        /// 서브 매장 마스터 조회
        /// </summary>
        /// <param name="sTableName"></param>
        /// <returns></returns>
        DataTable SelectSubStr(string sTableName);

        /// <summary>
        /// 카드 승인 헤더 IRT 전문 생성(카드,OCB포인트,콘 공용사용)
        /// </summary>
        /// <param name="sMsgID"></param>
        /// <param name="nIRTBodyLen"></param>
        /// <param name="sCmpApprID">업체정보</param>
        /// <param name="aApprID">단말기번호</param>
        /// <returns></returns>
        string MakeCreditCardHeader(string sMsgID, long nIRTBodyLen, string sCmpApprID, string aApprID);

        /// <summary>
        /// SPC VAN 전문 공통 전문 송/수신
        /// </summary>
        /// <param name="sSendItem"></param>
        /// <param name="sRecvItem"></param>
        /// <param name="bShowMsg"></param>
        /// <returns></returns>
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180503
        //해피쿠폰 발송시 승인 메시지 변경 '포인트 조회중입니다.' -> '쿠폰 발송중입니다.'
        //기존
        /*
        string ExecuteCardIrt(string sTradId, string sSendItem, ref string sRecvItem, bool bShowMsg, string sAuthInfo);
        string ExecuteCardIrt(string sTradID, string sSendItem, ref string sRecvItem, bool bShowMsg, string sChipData, string sSingData, string sLastRecvData, string sAuthInfo);
        */
        //변경
        string ExecuteCardIrt(string sTradId, string sSendItem, ref string sRecvItem, bool bShowMsg, string sAuthInfo, string sPAY_WAY_CD = "", string sPAY_DTL_CD_01 = "");
        string ExecuteCardIrt(string sTradID, string sSendItem, ref string sRecvItem, bool bShowMsg, string sChipData, string sSingData, string sLastRecvData, string sAuthInfo, string sPAY_WAY_CD = "", string sPAY_DTL_CD_01 = "");
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180503

        /// <summary>
        /// 기능키 유효성 검사
        /// </summary>
        /// <param name="sFuncKey"></param>
        /// <returns></returns>
        bool FunctionKeyValidity(string sFuncKey);

        /// <summary>
        /// 기능키 서브 메뉴 처리
        /// </summary>
        /// <param name="sFuncKey"></param>
        /// <returns></returns>
        bool FunctionKeySubMenuLoad(string sFuncKey);

        /// <summary>
        /// 쿠폰할인 기능키 조회
        /// </summary>
        /// <param name="sPay_Dc_Grp_Type"></param>
        /// <param name="sPay_Dc_Cd"></param>
        /// <returns></returns>
        DataTable SeletCouponDCFuncKey(string sPay_Dc_Grp_Type, string sPay_Dc_Cd);

        /// <summary>
        /// 환율 조회
        /// </summary>
        /// <param name="sFuncID"></param>
        /// <returns></returns>
        DataTable SelectForeign();

        /// <summary>
        /// 환율 단위 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <returns></returns>
        DataTable SelectExchangeRate(string sSaleDate);

        /// <summary>
        /// 환율 차수 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <returns></returns>
        DataTable SelectExchangeRateChasu(string sSaleDate);

        /// <summary>
        /// 환율등록
        /// </summary>
        /// <param name="sFuncID"></param>
        /// <returns></returns>
        DataTable SaveExchangeRate(string[] aRet);

        /// <summary>
        /// 식권 기능키 조회
        /// </summary>
        /// <param name="sPay_Dc_Grp_Type"></param>
        /// <param name="sPay_Dc_Cd"></param>
        /// <returns></returns>
        DataTable SeletMealTicketFuncKey(string sPay_Dc_Grp_Type, string sPay_Dc_Cd);

        /// <summary>
        /// 선불카드 판매 기능키 조회
        /// </summary>
        /// <param name="sPay_Dc_Grp_Type"></param>
        /// <param name="sPay_Dc_Cd"></param>
        /// <returns></returns>
        DataTable SeletSalePreCardFuncKey(double nAmount);

        /// <summary>
        /// 상품권 기능키 조회
        /// </summary>
        /// <param name="sPay_Dc_Grp_Type"></param>
        /// <param name="sPay_Dc_Cd"></param>
        /// <returns></returns>
        DataTable SeletGiftFuncKey(string sPay_Dc_Grp_Type, string sPay_Dc_Cd);

        //#15533 상품권(승인) 시 PREFIX 리딩을 통한 승인기능도입 요청 start

        /// <summary>
        /// 상품권 권종 조회
        /// </summary>
        /// <param name="sGiftCd"></param>
        /// <returns></returns>
        DataTable SeletGiftCd(string sGiftCd);

        //#15533 상품권(승인) 시 PREFIX 리딩을 통한 승인기능도입 요청 end

        /// <summary>
        /// 마스터 결제할인 Prefix 정보 조회
        /// </summary>
        /// <param name="sPrefixNo"></param>
        /// <returns></returns>
        DataTable SeletPrefixToPayTypeInfo(string sPrefixNo);
        /// <summary>
        /// 마스터 기간제휴사 결제할인 마스터 조회
        /// </summary>
        /// <param name="sPayDcGrpType"></param>
        /// <param name="sPayDcCd"></param>
        /// <param name="sCmpGradeCd"></param>
        /// <returns></returns>
        //#14231 KT 웰컴기프트 카드 기능 개발, PHJ START
        //기존
        //DataTable SeletTermCoopCmpPayDc(string sPayDcGrpType, string sPayDcCd, string sCmpGradeCd);
        //변경
        DataTable SeletTermCoopCmpPayDc(string sPayDcGrpType, string sPayDcCd, string sCmpGradeCd, string sDcApplyTrgt = "");
        //#14231 KT 웰컴기프트 카드 기능 개발, PHJ END


        //#14231 KT 웰컴기프트 카드 기능 개발, PHJ START
        /// <summary>
        /// 웰컴 기프트 버튼 활성화 여부
        /// </summary>

        //#14618 KT 더블할인 개발요청 start,phj
        //기존
        //bool WelcomGiftBtnYN(string sPosMenuKey, double nDestAmt, out string ProductCode);
        //변경
        bool WelcomGiftBtnYN(string sType, string sPosMenuKey, double nDestAmt, out string ProductCode);
        //#14618 KT 더블할인 개발요청 end,phj

        //#14231 KT 웰컴기프트 카드 기능 개발, PHJ END

        /// <summary>
        /// 마스터 기간제휴사 할인상품 마스터 조회
        /// </summary>
        /// <param name="sPayDcGrpType"></param>
        /// <param name="sPayDcCd"></param>
        /// <param name="sCmpGradeCd"></param>
        /// <returns></returns>
        DataTable SeletTermCoopCmpDcItem(string sPayDcGrpType, string sPayDcCd, string sCmpGradeCd);

        /// <summary>
        /// 제휴사 결제 할인 금액 계산
        /// </summary>
        /// <param name="sPAY_WAY_CD"></param>
        /// <param name="sPAY_DTL_CD_01"></param>
        /// <param name="sCmpGradeCd"></param>
        /// <param name="nSaleAmt"></param>
        /// <returns></returns>
        double ExecTermCoopCmpPayDc(string sPAY_WAY_CD, string sPAY_DTL_CD_01, string sCmpGradeCd, double nSaleAmt);

        /// <summary>
        /// 프로덕트 ID로 상품 조회
        /// </summary>
        /// <param name="sProductID"></param>
        /// <returns></returns>
        DataTable SeletProductIDToItemCD(string sProductID);

        /// <summary>
        /// POS IRT 전문 송/수신(점포서버 송수신: 제이슨 이용)
        /// </summary>
        string ExecutePosIrt(string sMsgType, string sSvrIP, int nSvrPort, int nTimeout, Hashtable htSendData, ref Hashtable htRecvData);
        string ExecutePosIrt(string sMsgType, string sSvrIP, int nSvrPort, int nTimeout, Hashtable htSendData, ref Hashtable htRecvData, bool VisibleMode);
        //2017-06-02 dkshin 해피앱 추후적립
        string ExecutePosHPAPPIrt(string sMsgType, string sSvrIP, int nSvrPort, int nTimeout, Hashtable htSendData, ref Hashtable htRecvData);

        /// <summary>
        /// POS IRT 전문 송/수신 - 외부 Van
        /// </summary>
        string ExecuteExIrt(string sSvrIP, int nSvrPort, int nTimeout, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData);

        /// <summary>
        /// POS IRT 전문 송/수신 - 외부 Van
        /// </summary>
        string ExecuteExIrt(string sSvrIP, int nSvrPort, int nTimeout, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData, bool bErrorSkip);

        /// <summary>
        /// POS IRT 전문 송/수신 - 외부 Van (전문 길이 위치 지정)
        /// </summary>
        string ExecuteLenIrt(string sSvrIP, int nSvrPort, int nTimeout, string sSendData, ref string sRecvData, int nRecvDataLen, int nRecvDataStartPosition);

        /// <summary>
        /// POS IRT 전문 송/수신 - 외부 Van (전문 길이 위치 지정)
        /// </summary>
        string ExecuteLenIrt(string sSvrIP, int nSvrPort, int nTimeout, string sSendData, ref string sRecvData, bool bFullSize, int nRecvDataLen, int nRecvDataStartPosition);

        /// <summary>
        /// POS IRT 전문 송/수신 -  외부 VAN (Byte 통신)
        /// </summary>
        string ExecuteByteIrt(string sSvrIP, int nSvrPort, int nTimeout, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen);

        /// <summary>
        /// POS TCP 전문 송/수신 기타 (Byte 통신)
        /// </summary>
        int ExecuteTcpClientIrt(string sFuncName, string sSvrIP, int nSvrPort, int nTimeout, byte[] bytSendData, ref byte[] bytRecvData, int nRecvDataLen);

        /// <summary>
        /// 결제수단코드 획득
        /// </summary>
        /// <param name="sPosMenuKey"></param>
        /// <returns></returns>
        string GetMenuKeyToPayWayCd(string sPosMenuKey);
        /// <summary>
        /// 결제세부코드 획득
        /// </summary>
        /// <param name="sPosMenuKey"></param>
        /// <returns></returns>
        string GetMenuKeyToPayDtlCd(string sPosMenuKey);

        /// <summary>
        /// 결제수단코드로 POS메뉴키 획득
        /// </summary>
        /// <param name="sPayWayCd"></param>
        /// <param name="sPayDtlCd"></param>
        /// <returns></returns>
        string GetPayCdToMenuKey(string sPayWayCd, string sPayDtlCd);

        /// <summary>
        /// 결제할인 마스터에서 결제할인 중복 가능여부 체크
        /// </summary>
        /// <param name="sPosMenuKey"></param>
        /// <returns></returns>
        bool PayDcDuplicationCheck(string sPosMenuKey);

        /// <summary>
        /// 결제할인 마스터에서 결제할인 중복 가능여부 체크
        /// </summary>
        /// <returns></returns>
        bool PayDcDuplicationCheck(string sPayWayCd, string sPayDtlCd, bool bShowMsg);
        /// <summary>
        /// 제휴사(통신사) VIP증정 대상 상품 체크
        /// </summary>
        /// <param name="sPAY_WAY_CD"></param>
        /// <param name="sPAY_DTL_CD_01"></param>
        /// <param name="sCmpGradeCd"></param>
        /// <returns></returns>
        double SrarchTermCoopCmpDcItem(string sPAY_WAY_CD, string sPAY_DTL_CD_01, string sCmpGradeCd);
        double SrarchTermCoopCmpDcItem(string sPAY_WAY_CD, string sPAY_DTL_CD_01, string sCmpGradeCd, ref int nSelRow);

        /// <summary>
        /// 입출금 계정 디테일 마스터
        /// </summary>
        /// <param name="sDpstWthdrType">입출금유형</param>
        /// <param name="sAccCd">계정코드</param>
        /// <returns></returns>
        DataTable SeletMstDpstWthdrAccDtl(string sDpstWthdrType, string sAccCd);

        /// <summary>
        /// 웹링크 마스터
        /// </summary>
        /// <param name="sDiv"></param>
        /// <returns></returns>
        DataTable SeletMstWebLinkMst(string sDiv);

        /// <summary>
        /// 공통 승인 로그 DB 저장
        /// </summary>
        /// <param name="결제정보"></param>
        /// <param name="([0]결제수단, [1]결제상세코드, [2]전문구분, [3]요청구분, [4]카드번호, [5]결제금액, [6]승인번호, [7]승인일자, [8]승인시간, [9]응답상태값, [10]응답메시지, [11]전문, [12]입력구분, [13]추후적립여부, [14]적립구분, [15] skt할인상품코드)"></param>
        string SetSaleApprLog(string sTradeDiv, string[] aParm);

        /// <summary>
        /// 스캔 바코드 상품 조회
        /// </summary>
        /// <param name="sScanCode">스캔코드</param>
        /// <returns></returns>
        string SeletItemMstToBarCode(string sSubStoreNo, string sScanCode, ref string sRetItemCd, ref string sRetScanCode, ref string sShtcutItemNm);

        //#20171018 상품등록 유통기한 체크하기 start, phj
        /// <summary>
        /// 타임스탬프바코드 체크 
        /// </summary>
        /// <param name="sSubStoreNo">점포코드</param>
        /// <param name="sScanCode">스캔코드</param>
        /// <param name="sRetItemCd">스탬프바코드의제품코드</param>
        /// <returns></returns>
        string TimeStampBarCodeCheck(string sSubStoreNo, string sScanCode, ref string sRetItemCd);
        //#20171018 상품등록 유통기한 체크하기 end, phj

        /// <summary>
        /// 중간입금/마감입금 거래 조회
        /// </summary>
        /// <param name="sKind"></param>
        /// <returns></returns>
        DataTable SelectADMTList(string sKind);

        /// <summary>
        /// 중간입금/마감입금 내역 조회
        /// </summary>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        DataTable SelectDPSTList(string sTradeNo);

        /// <summary>
        /// 중간입금/마감입금 원거래 취소 조회
        /// </summary>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        DataTable SelectDPSTRefund(string sTradeNo);

        /// <summary>
        /// 서버전송 데이터 저장
        /// </summary>
        /// <param name="sFuncCode"></param>
        /// <param name="aParam"></param>
        void SaveServerRequestTransactionData(string sFuncCode, string[] aParam);

        /// <summary>
        /// 기타 공지 처리 프로세스
        /// </summary>
        /// <param name="sMsgType"></param>
        /// <param name="aInParam"></param>
        /// <param name="aOutParam"></param>
        /// <returns></returns>
        bool GetEtcNoticeProcess(string sMsgType, ref string[] aOutParam);

        /// <summary>
        /// 기타 공지 업데이트
        /// </summary>
        /// <param name="sMsgDiv"></param>
        /// <param name="sSeq"></param>
        void UpdateEtcNoticeProcess(string sMsgDiv, DataRow dr);

        /// <summary>
        /// 주변장치 상태 관리
        /// </summary>
        Color GS_DeviceStatus();

        /// <summary>
        /// 주문 대기 번호 자동 채번
        /// </summary>
        /// <returns></returns>
        string GetWaitNoForDb();

        /// <summary>
        /// BR 팝업 업무 조회 셋팅
        /// </summary>
        void SetBrPopUpBizMst();
        /// <summary>
        /// BR 팝업 업무 조회
        /// </summary>
        /// <returns></returns>
        DataTable GetBrPopUpBizMst();

        /// <summary>
        /// 디비 업데이트
        /// </summary>
        /// <param name="dr"></param>
        /// <returns></returns>
        bool BrPopupUpdate(DataRow dr);

        /// <summary>
        /// MSR  카드번호 첫자리와 끝자리 체크하여 문자인 경우 스페이스로 치환
        /// </summary>
        /// <param name="sCardNo"></param>
        /// <param name="sValidDate"></param>
        /// <param name="sInputType"></param>
        /// <returns></returns>

        //#20171024 START, PHJ
        //기존
        //string MSR_CardNoCheck(string sCardNo, string sValidDate, ref string sInputType);

        //변경
        string MSR_CardNoCheck(string sCardNo, string sValidDate, ref string sInputType, string sPayWayCd = "", string sPayDtlCd = "");
        //#20171024 END, PHJ

        /// <summary>
        /// 거래번호 증가 체크
        /// </summary>
        /// <param name="sTranKind"></param>
        /// <returns></returns>
        bool TradeNoAddCheck(string sTranKind);

        /// <summary>
        /// 카드사 코드 조회
        /// </summary>
        /// <param name="sCardDiv"></param>
        /// <returns></returns>
        DataTable SeletCardCmp(string sCardDiv);

        /// <summary>
        /// 부가메뉴명 조회(TR로 로드시)
        /// </summary>
        /// <param name="sSubStoreNo"></param>
        /// <param name="sItemCode"></param>
        /// <returns></returns>
        DataTable SeletSubPrcMenu(string sSubStoreNo, string sItemCode);

        //#20170704 중국 단말기 승인 카드사 조회 start
        /// <summary>
        /// 카드사 매입사 조회
        /// </summary>
        /// <param name="sCardDiv"></param>
        /// <param name="sBankNo"></param>
        /// <returns></returns>
        DataTable SeletCardCmpNm(string sCardDiv, string sBankNo);
        //#20170704 중국 단말기 승인 카드사 조회 end

        //#Rhee,20170830 중국 단말기 승인 카드사 조회2 start
        /// <summary>
        /// 카드사 매입사 조회
        /// </summary>
        /// <param name="sCardDiv"></param>
        /// <param name="sBankNo"></param>
        /// <param name="sCardType"></param>
        /// <returns></returns>
        DataTable SeletCardCmpNm(string sCardDiv, string sBankNo, string sCardType);
        //#Rhee,20170830 중국 단말기 승인 카드사 조회2 end

        //#20170810 중국 선불카드 MST_ITEM 생성 start
        /// <summary>
        /// 선불카드 MST_ITEM 생성
        /// </summary>
        /// Rhee, 2017/08/10
        void PrecardSaveToMstItem();
        //#20170810 중국 선불카드 MST_ITEM 생성 end

        //#20170906 T페이 고도화 작업 phj, start
        //DataTable TpayPrefixCheck(string sCardNo);
        //#20170906 T페이 고도화 작업 phj, end

        //#20171120 유통기한 바코드 인식률 start, phj
        /// <summary>
        /// 유통기한 바코드 인식률
        /// </summary>
        void BarCodeSuccessRate(string sBarcodeNo, string sSuccessYN);
        //#20171120 유통기한 바코드 인식률 end, phj




        //#20171116 온라인 쿠폰 제품군코드,상품코드 존재 시 할인 대상이 변경되도록 추가 start, phj
        //기존

        //#20180502 온라인쿠폰 제품군, 상품코드 할인 적용 기능 적용 start
        /* 
        //적용시주석
        /// <summary>
        /// 해피쿠폰 할인 대상 유무 체크
        /// </summary>
        //int CpnItemDCTargetCheck(string CpnItemDcCode, ref DataTable CpnItemDt);
        int CpnItemDCTargetCheck(string CpnItemDcCode);
        */
        //#20180502 온라인쿠폰 제품군, 상품코드 할인 적용 기능 적용 end

        //변경
        /// <summary>
        /// 해피쿠폰 제품군의 상품 리스트 가져오기 
        /// </summary>
        DataTable CpnItemDCTargetList(string CpnItemDcCode);
        //#20171116 온라인 쿠폰 제품군코드,상품코드 존재 시 할인 대상이 변경되도록 추가 end, phj


        //#13341 신용카드 할부 개월 수 제한 기능 적용 start, phj
        string MstCmmSearch(string pGrpCode = "", string pCode = "");
        //#13341 신용카드 할부 개월 수 제한 기능 적용 end, phj

        //#20180322 휴게소pos매출연동 start,phj
        /// <summary>
        /// 도로공사 매출 연동 - JSON 파일 저장
        /// </summary>
        /// <param name="sType">저장형태</param>
        /// <param name="sFilePath">저장 경로</param>
        /// <param name="htData">데이터</param>
        /// <returns></returns>
        //string SaveRoadJson(string sType, string sFilePath, string sData);

        /// <summary>
        /// Hashtable to JsonString
        /// </summary>
        /// <param name="htData"></param>
        /// <param name="sJsonData"></param>
        /// <returns></returns>
        string HashToJsonString(Hashtable htData, ref string sJsonData);
        //#20180322 휴게소pos매출연동 end,phj

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

        //#16577 결제창 내부 봉투 추가 기능 도입 start, 20180920
        #region 공통코드 봉투상품 조회(T0042)
        DataTable ChkAddBagMstCmm();
        #endregion 공통코드 봉투상품 조회(T0042)
        //#16577 결제창 내부 봉투 추가 기능 도입 end, 20180920


        //  01.NHS_SCREEN
        DataTable Select_NHS_SCREEN(string sScreenCD = null);
        //  02.NHS_SCREEN_CONTENTS
        DataTable Select_NHS_SCREEN_CONTENTS(string sScreenCD, string sFrameCD = null, string sLayerCD = null, string sContentsID = null);
        //  03.NHS_SCREEN_LAYER
        DataTable Select_NHS_SCREEN_LAYER(string sScreenCD, string sFrameCD = null, string sLayerCD = null);
        DataTable Select_NHS_SCREEN_LAYER_GROUPBY_FRAMECD(string sScreenCD, string sFrameCD = null);
        /*  사용안함
        //  04.NHS_STOR_PRD_CATE
        DataTable Select_NHS_STOR_PRD_CATE(string sPrdCateUpCD = null, string sPrdCateCD = null);
        */
        //  05.NHS_STOR_PRD_KEY
        DataTable Select_NHS_STOR_PRD_KEY(string sItemCD = null, string sBarcode = null, string sPrdCateCD = null, string sTouchKeyCD = null);
        //  06.NHS_UI_TEMPLATE
        DataTable Select_NHS_UI_TEMPLATE(string sTemplCD = null);
        //  07.NHS_CPI_CONTENTS
        DataTable Select_NHS_CPI_CONTENTS(string sCpiCD = null);
        /*
        //  08.NHS_CUST_BUY_HIST
        DataTable Select_NHS_CUST_BUY_HIST(string sHPCCustCD = null, string sItemCD = null);
        */
        //  09.NHS_LANG_MSG
        DataTable Select_NHS_LANG_MSG(string sLanguageGubunCD = null, string sLanguageMessageCD = null, string sLanguageCD = null);
        //  10.NHS_LAYOUT
        DataTable Select_NHS_LAYOUT(string sLayoutCD = null);
        /*  사용안함
        //  11.NHS_PRD_CATE_L
        DataTable Select_NHS_PRD_CATE_L(string sProductCategoryCD = null, string sProductCategoryUpCD = null);
        */
        /*  사용안함
        //  12.NHS_PRD_CATE_M
        DataTable Select_NHS_PRD_CATE_M(string sProductCategoryCD = null, string sProductCategoryUpCD = null);
        */
        //  13.NHS_PRD_MST
        DataTable Select_NHS_PRD_MST(string sBarCD = null, string sItemCD = null);
        //  14.NHS_OPTN_MST
        DataTable Select_NHS_OPTN_MST(string sItemOptionGroupCD = null, string sItemOptionCD = null);
        //  15.NHS_PRD_OPTN_GRP
        DataTable Select_NHS_PRD_OPTN_GRP(string sItemOptionGroupCD = null);
        //  16.NHS_PRD_OPTN
        DataTable Select_NHS_PRD_OPTN(string sItemCD = null, string sItemOptionGroupCD = null);
        //  17.NHS_PRD_CATE
        DataTable Select_NHS_PRD_CATE(string sProductCategoryUpCD = null, string sProductCategoryCD = null);
        //  18.NHS_STOR_PRD_TAG
        DataTable Select_NHS_STOR_PRD_TAG(string sItemCD = null, string sTagKind = null);
        /// <summary>
        /// 2019-03-19 - 1997fx11 : 구매고객 이력 호출
        /// </summary>
        /// <param name="sUpdateDT"></param>
        /// <param name="sHPCCustCD"></param>
        /// <param name="sItemCD"></param>
        /// <returns></returns>
        string[] Select_NHS_CUST_BUY_HIST(string sUpdateDT, string sHpcCustCD, string sItemCD = null);
        /// <summary>
        /// 2019-03-20 - 1997fx11 : 상품(아이템) 변경 처리
        /// </summary>
        /// <param name="sUpdateDT"></param>
        /// <param name="sItemCD"></param>
        /// <returns></returns>
        int Get_NEW_PRODUCT_BY_IRT(string sUpdateDT = null, string sItemCD = null);
        /// <summary>
        /// 2019-03-21 - 1997fx11 : 상품(아이템) 변경 처리
        /// </summary>
        /// <returns></returns>
        int Send_SYSTEM_INFO();
        /// <summary>
        /// 2019-04-26 - 1997fx11 : 자동 마감/개업
        /// </summary>
        void SetSaleEndOpen();
        /// <summary>
        /// 2019-05-29 - 1997fx11 : 알림톡 전송
        /// </summary>
        /// <param name="sPhoneNo"></param>
        /// <param name="korItemName"></param>
        /// <param name="itemCount"></param>
        /// <returns></returns>
        int Send_NoticeTalk(string sPhoneNo, string korItemName, string itemCount);
        /// <summary>
        /// Kiosk 에서 사용가능한 결재수단 사용여부를 조회 : 2019-06-10 - 1997fx11
        /// </summary>
        /// <param name="bUseYN"></param>
        /// <returns></returns>
        DataTable Select_NHS_FUNC_INFO(bool bUseYN = false);
    }
    #endregion 

    #region 거래완료 처리 인터페이스
    /// <summary>
    /// 거래완료 처리 인터페이스
    /// </summary>
    public interface ISaleCompleteUs
    {
        //#17142 [해피오더]POS로그인 시 영수증프린터로 장부재고 자동 출력 start
        string BookInventoryPrint(string aParam);
        //#17142 [해피오더]POS로그인 시 영수증프린터로 장부재고 자동 출력 end

        //#20171017 전자영수증 발행 start, phj
        /// <summary>
        /// 해피앱 전자영수증 발행 여부 체크 (적립 또는 사용 내역 존재 시 체크됨)
        /// </summary>
        int CheckElectronic_Receipt();
        //#20171017 전자영수증 발행 end, phj

        //#20170918 기념일 배송 출력 start
        /// <summary>
        /// 기념일 배송 출력
        /// </summary>
        string ExecuteAnniversary(string aParam);
        //#20170918 기념일 배송 출력 end

        /// <summary>
        /// 서비스 실행
        /// </summary>
        string Execute(string[] aParam);

        /// <summary>
        /// 거래완료 처리(영업개시,영업종료,로그온,로그오프...)
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string OpenCloseExecute(string[] aParam);

        /// <summary>
        /// 거래완료 처리(판매)
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string PosSaleExecute(string[] aParam);

        /// <summary>
        /// 간이영수증 완료 처리
        /// </summary>
        /// <returns></returns>
        string PosEtcReceiptExecute(object oParam);

        /// <summary>
        /// 고객 불편 사항 출력
        /// </summary>
        /// <returns></returns>
        string PosClaimReceiptExecute();

        /// <summary>
        /// 직전 영수증 재출력
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string PosSaleLastRePrint(string[] aParam);

        /// <summary>
        /// 영수증 재출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <returns></returns>
        bool PosSaleRePrint(string sPrtData);

        /// <summary>
        /// 영수증 재출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <param name="bTitle"></param>
        /// <returns></returns>
        bool PosSaleRePrint(string sPrtData, bool bTitle);

        /// <summary>
        /// 영수증 출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <returns></returns>
        bool PosRembOrderPrint(string sPrtData);

        /// <summary>
        /// 영수증 출력(해피오더 주문서)
        /// </summary>
        /// <param name="aPrtData"></param>
        /// <param name="bHPOAutoPrintYN"> 로그인 시 한번 True: 자동출력, False: 자동미출력</param>
        /// <param name="sPrtGubun"> M:당월누계건 , D:당일픽업건</param>
        /// <returns></returns>
        //#16366 해피오더 당월누적주문내역 + 당일 해피오더주문 상세내역 자동 출력기능 start
        //기존
        //bool PosPrint(string[] aPrtData);
        //변경
        bool PosPrint(string[] aPrtData, bool bHPOAutoPrintYN, string sPrtGubun);
        //#16366 해피오더 당월누적주문내역 + 당일 해피오더주문 상세내역 자동 출력기능 end

        //17.08.22 dkshin SS 해피오더
        /// <summary>
        /// 영수증 출력(해피오더 KDS 전송 실패 시 사용)
        /// </summary>
        /// <param name="aPrtData"></param>
        /// <returns></returns>
        bool HappyOrderKDSPrint(ArrayList aPrtData);

        /// <summary>
        /// 해피포인트(인카드쿠폰) 내역 출력
        /// </summary>
        /// <param name="oEctItem"></param>
        /// <param name="oParam"></param>
        /// <returns></returns>
        string ExecuteInCardCpnReceipt(object oEctItem, object oParam);

        /// <summary>
        /// 행사주문취합내역
        /// </summary>
        /// <param name="oParam"></param>
        /// <returns></returns>
        string PosSearchEventExecute(string sPrintData);

        /// <summary>
        /// 당일 거래 복구
        /// </summary>
        /// <returns></returns>
        string TranDataRestore(string[] aParam);

        /// <summary>
        /// 더치페이 영수증 건출력
        /// </summary>
        /// <param name="aParam"></param>
        string DutchPayReceiptPrint(string[] aParam);

        /// <summary>
        /// 지정취소 데이터 저장 처리
        /// </summary>
        /// <returns></returns>
        string ItemCancelExecute(string[] aParam);

        /// <summary>
        /// 정산지 내역 출력
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string ExecuteADMTReceipt(string[] aParam);

        /// <summary>
        /// 기타입출금 조회 내역 출력 처리
        /// </summary>
        /// <returns></returns>
        string AccEtcListReceipt(string sFromDate, string sToDate);

        /// <summary>
        /// 준비점검 공지사항 출력
        /// </summary>
        /// <returns></returns>
        string PrepStoreReceipt(DataTable dtData);

        /// <summary>
        /// 준비금 등록 내역 출력
        /// </summary>
        /// <returns></returns>
        string AccRemoneyListReceipt(DataTable dtData, string sFromDate);

        /// <summary>
        /// 돈통오픈
        /// </summary>
        /// <returns></returns>
        string OpenManualCashdrawer();

        /// <summary>
        /// 기타 로그 헤더 저장
        /// </summary>
        /// <param name="sTradeKind"></param>
        /// <param name="bErrShow"></param>
        /// <param name="sOrgSaleDt"></param>
        /// <param name="sOrgPosNo"></param>
        /// <param name="sOrgTradeNo"></param>
        /// <returns></returns>
        string EtcLogTrSave(string sTradeKind, bool bErrShow, string sOrgSaleDt, string sOrgPosNo, string sOrgTradeNo);

        /// <summary>
        /// 원거래에 해피포인트 추후적립 내역 출력정보 ADD
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        string AddHappyPointAfterSave(string sSaleDate, string sPosNo, string sTradeNo);

        //#해피앱 추후적립 start, sskim
        /// <summary>
        /// 원거래에 해피포인트 추후적립 내역 출력정보 ADD
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        string AddHappyPointHpAppAfterSave(string sSaleDate, string sPosNo, string sTradeNo);
        //#해피앱 추후적립 end, sskim

        /// <summary>
        /// 화면에 표시된는 영수증 출력 데이터 생성
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        string GetDisplayPrintData(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 보류 거래 저장
        /// </summary>
        /// <param name="sHoldStat"></param>
        /// <param name="sOrgRegNo"></param>
        /// <param name="dQty"></param>
        /// <param name="dSaleAmt"></param>
        void EtcHoldLogSvae(string sHoldStat, string sOrgRegNo, double dQty, double dSaleAmt);

        /// <summary>
        /// 주문내역서 출력
        /// </summary>
        /// <returns></returns>
        string ExecuteOrderBillReceipt();

        //17.05.18 dkshin 쇼킹박스 추가
        /// <summary>
        /// 쇼킹박스처리
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string PosShockingBoxExecute();

        //17.05.18 dkshin 쇼킹박스 추가
        /// <summary>
        /// 쇼킹박스조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string PosShockingBoxSearch(string aParam);

        // Add, 2017.09.04, 근무시간 확인서 출력
        /// <summary>
        /// 근무시간 확인서 출력
        /// </summary>
        /// <param name="empNo">직원코드</param>
        /// <param name="empNm">직원성명</param>
        /// <param name="strTime">출근일시 (yyyyMMddHHmmss)</param>
        /// <param name="endTime">퇴근일시 (yyyyMMddHHmmss)</param>
        /// <returns></returns>
        string ExecuteWorkTimeReceipt(string empNo, string empNm, string strTime, string endTime);

        //#20171227, 예약증 양식 출력 Start
        /// <summary>
        /// 예약증 양식 출력
        /// </summary>
        /// <returns></returns>
        string ExecuteReservationForm();
        //#20171227, 예약증 양식 출력 End

        // grayber@20180112 전자영수증 주문(대기)번호표 출력 start - 거래완료 처리 인터페이스 추가
        /// <summary>
        /// 대기번호표 출력
        /// </summary>
        /// <returns></returns>
        //grayber@20180226  대기번호표 조건 변경 start - 파라매터 추가
        /// string ExcuteElectroBillOrderNoReceipt();
        string ExcuteElectroBillOrderNoReceipt(bool bForce);
        //grayber@20180226  대기번호표 조건 변경 end
        // grayber@20180112 전자영수증 주문(대기)번호표 출력 end

    }
    #endregion 

    #region 고객 클레임 처리 인터페이스
    /// <summary>
    /// 고객 클레임 처리 인터페이스
    /// </summary>
    public interface ICustomerService
    {
        /// <summary>
        /// 고객 클레임 SEQ
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetClaimSeq();

        /// <summary>
        /// 고객 클레임 처리 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SearchCustomerList(string sSearchDate);

        /// <summary>
        /// 고객 클레임 상세 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SearchCustomerDetail(string sSaleDate, string sSeq);

        /// <summary>
        /// 고객 클레임 저장
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string SetCustomerClaim(string sClaimData);

        /// <summary>
        /// 고객 클레임 출력
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string CustomerClaimPrt(string sClaimData);

    }
    #endregion 

    #region 판매화면 처리 인터페이스
    /// <summary>
    /// 판매화면 처리 인터페이스
    /// </summary>
    public interface IFormSaleMainUs
    {
        /// <summary>
        /// 판매화면 초기화
        /// </summary>
        /// <param name="bChgTradeDiv">상품등록시작</param>
        /// <param name="bChgSaleFlow">판매흐름변경</param>
        void DisplayInit(bool bChgSaleDoing, bool bChgSaleFlow);

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

        /// <summary>
        /// 부가메뉴 초기화 및 부가메뉴 마스터 로딩
        /// </summary>
        /// <param name="sSubStoreCode"></param>
        /// <param name="sItemCode"></param>
        /// <returns></returns>
        bool LoadSubMenuDisplay(string sSubStoreCode, string sItemCode);

        // <summary>
        /// 세트메뉴 상품 화면 표시
        /// </summary>
        /// <param name="sGroupCode"></param>
        /// <param name="sGroupName"></param>
        /// <returns></returns>
        bool LoadSetMenuDisplay(string sGroupCode, string sGroupName);
        bool LoadSetMenuDisplay(string sGroupCode, string sGroupName, bool bSellGift);
        /// <summary>
        /// 플레이버 초기화 및 플레이버 마스터 로딩
        /// </summary>
        /// <returns></returns>
        bool LoadFlavourMaster(string sSubStoreCode);

        /// <summary>
        /// 결제등록 정보 화면 표시
        /// </summary>
        void DisplayPayment();

        /// <summary>
        /// 판매,결제 모드 변경
        /// </summary>
        /// <param name="bSaleMode">true:판매모드, false:결제모드</param>
        void ChangeSalePayMode(bool bSaleMode);
        void ChangeShowPayBtn(bool bShowPayBtn);

        /// <summary>
        /// 판매화면 종료 처리
        /// </summary>
        void SaleMainExit();

        /// <summary>
        /// 상품Grid의 현재 선택된 Row 반환
        /// </summary>
        /// <returns></returns>
        int GetSelectedIndexOnSaleItemGrid();

        /// <summary>
        /// 반품 처리
        /// </summary>
        /// <param name="iRow"></param>
        /// <returns></returns>
        string ReturnPay(int iRow);

        /// <summary>
        /// 상단 MOT 호출 처리
        /// </summary>
        /// <param name="sFuncCode"></param>
        void SetTopMot(string sFuncCode);

    }
    #endregion 

    #region 해피오더 상품 취득
    /// <summary>
    /// 해피오더 상품 취득
    /// </summary>
    public interface IFormHappyOrderMainUs
    {
        /// <summary>
        /// 해피오더 상품 취득
        /// </summary>
        ArrayList HappyOrderItem { get; }

        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
        void Receive_BarCodeInfo(Hashtable htBarCodeInfo);
        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
    }
    #endregion 

    #region 프로그램 시작 화면 처리 인터페이스
    /// <summary>
    /// 프로그램 시작 화면 처리 인터페이스
    /// </summary>
    public interface IFormSaleOpenUs
    {
        void SetPanelShowFlag(bool bShow);

        void InitProgressbar();

        void SaleOpenProgress(string sMstId, int nProgress);

        void SetLabelMsg(string sMsg);

        void SetProgressbarStyle(System.Windows.Forms.ProgressBarStyle pbStyle);

        void ProgressProgressBar(int iStep);
    }
    #endregion 

    #region 메뉴이동 화면 처리 인터페이스
    /// <summary>
    /// 메뉴이동 화면 처리 인터페이스
    /// </summary>
    public interface IFormTableItemMoveUs
    {
        string FirstSelectedFloorCd { get; set; }

        string FirstSelectedTableNo { get; set; }

        string SecondSelectedFloorCd { get; set; }

        string SecondSelectedTableNo { get; set; }

        DataTable LeftGrid { get; }

        DataTable RightGrid { get; }
    }
    #endregion 

    #region 주방프린터 메시지구분
    /// <summary>
    /// 주방프린터 메시지구분
    /// </summary>
    public interface IFormKtchMsgUs
    {
        /// <summary>
        /// 메시지구분
        /// (PosConst.KPS_ORD_MSG_ID, 0:거래중지, 1:상품메모, 2:좌석메모, 3:테이블합석, 4:테이블이동, 5:상품이동, 9:FireKey)
        /// </summary>
        string MsgId { get; set; }

        int ItemRow { get; set; }

        string FloorCd { get; set; }

        string TableNo { get; set; }
    }
    #endregion 

    #region 캠페인
    /// <summary>
    /// 캠페인
    /// </summary>
    public interface ICampaignUs
    {
        /// <summary>
        /// 캠페인 조건 마스터 로드
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        bool LoadCampaignCondition(string[] aParam);

        /// <summary>
        /// 캠페인 상품 등록 및 실행
        /// </summary>
        /// <param name="bExecCampign">캠페인실행여부</param>
        /// <returns></returns>
        double RegisterCampaignPlu(bool bExecCampign);

        /// <summary>
        /// 상품 캠페인 및 해피포인트 캠페인 할인 계산 처리
        /// </summary>
        /// <param name="sPayKeySeqNo">키값(취소시사용 "":상품캠페인, 그외 HP캠페인</param>
        /// <param name="bPluAllClear">상품캠페인일때전체취소후재계산여부(true:전체쉬소, false:사은품제외)</param>
        /// <param name="sPosOpInputDiv">사은품캠페인("":상품만, 그외:사은품캠페인계산)</param>
        /// <param name="sCardNo">카드번호</param>
        /// <param name="sTrgtCustType">고객구분(앱여부):N:일반고객, Y:앱고객</param>
        /// <param name="sCustID">고객ID</param>
        /// <param name="sCustLvlCd">고객등급코드</param>
        /// <returns></returns>
        double ExecuteCampaignPluHappyPoint(string sPayKeySeqNo, bool bPluAllClear, string sPosOpInputDiv, string sCardNo = "", string sTrgtCustType = "", string sCustID = "", string sCustLvlCd = "");

        /// <summary>
        /// 캠페인 조건의 행사상품 합계금액 및 행사금액 초기화
        /// </summary>
        /// <returns></returns>
        void ClearCampaignAmt();

        /// <summary>
        /// 해피포인트 결제 캠페인 할인 계산 처리
        /// </summary>
        /// <param name="sPayKey">키값(취소시사용)</param>
        /// <param name="sCardNo">카드번호</param>
        /// <param name="nPayAmt">지불금액</param>
        /// <param name="nExpPoint">소멸예정포인트</param>
        /// <param name="sCustID">고객번호</param>
        /// <returns></returns>
        double ExecuteCampaignHappyUse(string sPayKey, string sCardNo, double nPayAmt, double nExpPoint, string sCustID);

        /// <summary>
        /// 결제 캠페인 할인 계산 처리
        /// </summary>
        /// <param name="sPayKey">키값(취소시사용)</param>
        /// <param name="sCardNo">카드번호</param>
        /// <param name="sPaymentDiv">지불구분(01:신용카드, 02:캐시비, 03:티머니, 04:스마일페이)</param>
        /// <param name="nPayAmt">지불금액</param>
        /// <returns></returns>
        //#14538 스마일페이 캠페인 확인창 중복 팝업 확인요청 start,phj
        //기존
        //double ExecuteCampaignPayment(string sPayKey, string sCardNo, string sPaymentDiv, double nPayAmt);
        //변경
        double ExecuteCampaignPayment(string sPayKey, string sCardNo, string sPaymentDiv, double nPayAmt, bool bPopupYN = true);
        //#14538 스마일페이 캠페인 확인창 중복 팝업 확인요청 end,phj


        //#17169 스마일페이 변경요청 건 start, 20181113
        //기존소스
        /*
        //#17169 스마일페이 변경요청 건 start
        /// <summary>
        /// 스마일페이 프로모션코드
        /// </summary>
        void GetSmilepayPromotionCode(out string SmilepayCampaingCode, out string SmilepayPromotionCode);
        /// <summary>
        /// 스마일캐시 적립대상금액
        /// </summary>
        double GetSmileCashTargetAmt(string pCampainCode);
        //#17169 스마일페이 변경요청 건 end
        */

        //변경소스 
        /// <summary>
        /// 적용된 캠페인 있는지 체크
        /// sSmilepayPromotionCode 스마일페이로모션코드          
        /// dSmileCashTargetAmt 스마일캐시금액
        /// bApplyCampaign 적용된캠페인유무
        /// </summary>
        void GetSmailePayCampaignCheck(double pSmilepayPayAmt, out string pSmilepayPromotionCode, out double pSmileCashTargetAmt, out bool pApplyCampaign);
        //#17169 스마일페이 변경요청 건 end, 20181113

        /// <summary>
        /// 결제 캠페인 할인 취소 처리
        /// </summary>
        /// <param name="sPayKeySeqNo"></param>
        /// <param name="sPosOpInputDiv"></param>
        /// <returns></returns>
        bool CancelCampaignPayment(string sPayKeySeqNo, string sPosOpInputDiv);

        /// <summary>
        /// 결제 캠페인 확정처리(결제아이템 생성)
        /// </summary>
        /// <param name="sPayKeySeqNo">키값(취소시사용)</param>
        /// <returns></returns>
        bool CompleteCampaignPayment(string sPayKeySeqNo);

        /// <summary>
        /// 해피포인트 적립캠페인 계산 처리
        /// </summary>
        /// <param name="cEtcItemHP"></param>
        void ExecuteCampaignHappyPointSave(string sPayKey, Column.TR_ETC.DATA cEtcItemHP);

        /// <summary>
        /// 해피포인트 스템프 캠페인 상품정보 획득 처리
        /// </summary>
        string GetCampaignHappyStampInfo();

        /// <summary>
        /// 해피포인트 스템프 캠페인 응답 설정 처리
        /// </summary>
        /// <param name="sHP_CAMPAIGN_INFO"></param>
        /// <param name="sStmapCntInfo"></param>
        /// <returns></returns>
        void SetCampaignHappyStampInfo(string sHP_CAMPAIGN_INFO, string sStmapCntInfo, string sCustID);

        /// <summary>
        /// 고객화면 캠페인 컨텐츠 표시
        /// </summary>
        /// <param name="sPaymentDiv">지불구분(01:신용카드, 02:캐시비, 03:티머니, 98:해피포인트적립, 99:해피포인트결제)</param>
        void CustDisplayCampaign(string sPaymentDiv);

        /// <summary>
        /// 영수 캠페인 계산 처리
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        double ExecuteCampaignPrint(string[] aParam);

        /// <summary>
        /// 캠페인 출력데이터 획득
        /// </summary>
        ArrayList GetCampaignPrintData(string[] aParam);            // 본영수증
        ArrayList GetCampaignPrintDataAddBill(string[] aParam);     // 별도영수증

        //grayber@20171214 캠페인 리펀드 쿠폰 start
        ArrayList GetRefundCampaignPrintData(string[] aParam);            // 캠페인리펀드 추가
        //grayber@20171214 캠페인 리펀드 쿠폰 end

        /// <summary>
        /// 캠페인 조건에서 캠페인명 획득
        /// </summary>
        /// <param name="sCpiCode">캠페인코드</param>
        /// <param name="nNameDiv">명종류(0:캠페인명, 1:영수증명, 2:수량제한명)</param>
        /// <returns></returns>
        string GetCampaignName(string sCpiCode, int nNameDiv);
    }
    #endregion 

    #region 고객용 화면
    /// <summary>
    /// 고객용 화면
    /// </summary>
    public interface ICustDisplayUs
    {
        /// <summary>
        /// 고객용 화면 시작
        /// </summary>
        void StartCustDisplay();
        /// <summary>
        /// 고객용 화면 멈춤
        /// </summary>
        void StopCustDisplay();
        /// <summary>
        /// 고객용 화면 종료
        /// </summary>
        void CloseCustDisplay();
        /// <summary>
        /// 상품등록 내역 초기화
        /// </summary>
        void ClearSaleItemList();
        /// <summary>
        /// 상품등록 내역 화면 표시
        /// </summary>
        void DisplaySaleItemList(bool bPlu, bool bPay, int nSelRow);
        /// <summary>
        /// 거래완료 내역 화면 표시
        /// </summary>
        void SaleCompleteDisplay(double nChangeAmt);
        /// <summary>
        /// 외화 내역 화면 표시
        /// </summary>
        void DisplayForeignCashList(string sForeignInfo);
        /// <summary>
        /// 캠페인 컨텐츠 표시
        /// </summary>
        void DisplayCampaign(string sFileDiv, string sFileName);
        /// <summary>
        /// 화면 보호기 시작
        /// </summary>
        bool ScreenSaverDisplay();
        /// <summary>
        /// 상품등록 내역 포커스 처리
        /// </summary>
        void DisplaySaleItemSelect(int nSelRow);
    }
    #endregion 

    #region FTP 관련 interface
    /// <summary>
    /// FTP 관련 interface
    /// </summary>
    public interface INetworkFTP
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sServer"></param>
        /// <param name="sUserId"></param>
        /// <param name="sPassword"></param>
        /// <param name="iTimeOutSeconds"></param>
        /// <param name="iPort"></param>
        /// <returns></returns>
        int Connect(string sServer, string sUserId, string sPassword, int iTimeOutSeconds, int iPort);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sSvrDirectory"></param>
        /// <param name="sLocalDirectory"></param>
        /// <param name="sFileNm"></param>
        /// <returns></returns>
        int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, string sFtpMode);
        int Download(string sSvrDirectory, string sLocalDirectory, string sFileNm, ref string sMsg, string sFtpMode);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sSvrDirectory"></param>
        /// <param name="sLocalDirectory"></param>
        /// <param name="sFileNm"></param>
        /// <returns></returns>
        int Upload(string sSvrDirectory, string sLocalDirectory, string sFileNm);


        /// <summary>
        /// 
        /// </summary>
        void Disconnect();
    }
    #endregion

    #region IRT 관련 interface
    /// <summary>
    /// IRT 관련 interface
    /// </summary>
    public interface INetworkIRT
    {
        /// <summary>
        /// IRT String으로 Send/Recv 
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sComm"></param>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sComm, ref string sRecvData);

        /// <summary>
        /// IRT Byte로 Send/Recv 
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="comm"></param>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int IRTSendReceive(string sIP, int iPort, int iTimeOut, byte[] comm, ref byte[] sRecvData);

        /// <summary>
        /// IRT String로의 Send/Recv  - 외부 Van
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sComm"></param>
        /// <param name="sRecvData"></param>
        /// <param name="nRecvDataLen"></param>
        /// <param name="sAckData"></param>
        /// <returns></returns>
        int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData);

        /// <summary>
        /// IRT String로의 Send/Recv  - 외부 Van, 에러 무시
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sSendData"></param>
        /// <param name="sRecvData"></param>
        /// <param name="nRecvDataLen"></param>
        /// <param name="sAckData"></param>
        /// <param name="bErrorSkip"></param>
        /// <returns></returns>
        int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, int nRecvDataLen, string sAckData, bool bErrorSkip);

        /// <summary>
        /// IRT Byte로 Send/Recv  - 외부 Van
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="comm"></param>
        /// <param name="sRecvData"></param>
        /// <param name="nRecvDataLen"></param>
        /// <param name="sAckData"></param>
        /// <returns></returns>
        int IRTSendReceiveEx(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, byte[] sAckData);

        /// <summary>
        /// IRT Byte로 Send/Recv  - 외부 Van (전문길이 위치지정)
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sSendData"></param>
        /// <param name="sRecvData"></param>
        /// <param name="bFullSize"></param>
        /// <param name="nRecvDataLen"></param>
        /// <param name="nRecvDataStartPosition"></param>
        /// <returns></returns>
        int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, string sSendData, ref string sRecvData, bool bFullSize, int nRecvDataLen, int nRecvDataStartPosition);

        /// <summary>
        /// IRT Byte로 Send/Recv  - 외부 Van (전문길이 위치지정)
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="bSendData"></param>
        /// <param name="bRecvData"></param>
        /// <param name="nRecvDataStartLen"></param>
        /// <param name="nRecvDataEndLen"></param>
        /// <returns></returns>
        int IRTSendReceiveLen(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen, int nRecvDataStartPosition);

        /// <summary>
        /// IRT Byte로의 Send/Recv  - 외부 Van (Bypass Byte)
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="bSendData"></param>
        /// <param name="bRecvData"></param>
        /// <param name="nRecvDataLen"></param> 
        /// <returns></returns>
        int ByPassSendReceiveData(string sIP, int iPort, int iTimeOut, byte[] bSendData, ref byte[] bRecvData, int nRecvDataLen);
    }
    #endregion 

    #region Tran/저널/서명/전자영수증 Send 관련 interface
    /// <summary>
    /// Tran/저널/서명/전자영수증 Send 관련 interface
    /// </summary>
    public interface INetworkTranSend
    {
        /// <summary>
        /// Tran/저널/서명/전자영수증 Send 실행
        /// </summary>
        /// <returns></returns>
        void StartTranSend();

        /// <summary>
        /// Tran/저널/서명/전자영수증 Send 중지
        /// </summary>
        /// <returns></returns>
        void StopTranSend();

        /// <summary>
        /// 한국공항공사 매출 저장
        /// </summary>
        /// <param name="sSendType"></param>
        /// <param name="sCmpCd"></param>
        /// <param name="sSaleDt"></param>
        /// <param name="sStorCd"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="cHeader"></param>
        /// <param name="alItems"></param>
        /// <returns></returns>
        //string SaveDataToDb(string sSendType, string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, Column.KACReceiptHeader cHeader, ArrayList alItems, Column.KACCalcData cCalcData);
    }
    #endregion 

    #region IWatcher
    /// <summary>
    /// IWatcher
    /// </summary>
    public interface IWatcher
    {
        void Start();

        void Stop();
    }
    #endregion 

    #region IWatcherBack
    /// <summary>
    /// IWatcherBack
    /// </summary>
    public interface IWatcherBack
    {
        void Start();

        void Stop();

        bool PGMReBootCheck();
    }
    #endregion 

    #region 거래 외부 인터페이스
    /// <summary>
    /// 거래 외부 인터페이스
    /// </summary>
    public interface lTranInterfaceOutside
    {
        void Start();

        void Stop();
    }
    #endregion 

    #region Measuring 관련 interface
    /// <summary>
    /// Measuring 관련 interface
    /// </summary>
    public interface IMeasuring
    {
        void StartMeasuring();

        void StopMeasuring();

        void SetPrintMode(PosConst.MEASURING_AGENT_PRINT_MODE sMode);

        void SetHappyOrderData(string[] sData);
    }
    #endregion 

    #region 주방프린터 출력 관련 interface
    /// <summary>
    /// 주방프린터 출력 관련 interface
    /// </summary>
    public interface IKPSMain
    {
        void StartKPS();

        void StopKPS();

        bool KPSLanStatusCheck(string sKpsIp, string sKpsPort);
    }
    #endregion 

    #region JSON 관련 interface
    /// <summary>
    /// JSON 관련 interface
    /// </summary>
    public interface INetworkJSON
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="htComm"></param>
        /// <param name="htRecvData"></param>
        /// <returns></returns>
        int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref Hashtable htRecvData);
        /// <summary>
        /// 마스터 전송을 위한 IRT 요청
        /// </summary>
        /// <param name="sIp"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sCommData"></param>
        /// <param name="htData"></param>
        /// <param name="sbRecvData"></param>
        /// <returns></returns>
        int MstIRTSendReceive(string sIp, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref StringBuilder sbRecvData);
        /// <summary>
        /// 2019-03-20 - 1997fx11 : Kiosk관련 전송을 위한 IRT 요청
        /// </summary>
        /// <param name="sIp"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sCommData"></param>
        /// <param name="htData"></param>
        /// <param name="sbRecvData"></param>
        /// <returns></returns>
        int CmsIRTSendReceive(string sIp, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref StringBuilder sbRecvData, ref string sUpDate);
        /// <summary>
        /// 디지털메뉴보드 I/F용 
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="sCommData"></param>
        /// <param name="htData"></param>
        /// <param name="sRecvedData"></param>
        /// <returns></returns>
        int DmbIRTSendReceive(string sIP, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref string sRecvedData);

        /// <summary>
        /// 중국 - 알리페이/위챗페이 승인 데몬과 통신
        /// </summary>
        /// <param name="sIP"></param>
        /// <param name="iPort"></param>
        /// <param name="iTimeOut"></param>
        /// <param name="htData"></param>
        /// <param name="htRecvData"></param>
        /// <returns></returns>
        int ChinaIRTSendReceive(string sIP, int iPort, int iTimeOut, string sData, ref Hashtable htRecvData);


        //#20180322 휴게소pos매출연동 start,phj
        /// <summary>
        /// JSON 파일 생성
        /// </summary>
        /// <param name="sType">자료 형태</param>
        /// <param name="sFile">경로 + 파일</param>
        /// <param name="htData">자료</param>
        /// <returns>string</returns>
        string SaveJsonFile(string sType, string sFile, string sJsonData);

        /// <summary>
        /// HashTable To JsonString
        /// </summary>
        /// <param name="htData"></param>
        /// <param name="sJsonData"></param>
        /// <returns></returns>
        string HashToJsonString(Hashtable htData, ref string sJsonData);
        //#20180322 휴게소pos매출연동 end,phj

        /// <summary>
        /// 2019-05-29 - 1997fx11 : 알림톡 전송
        /// </summary>
        /// <param name="htData"></param>        
        /// <returns></returns>
        //int Send_NoticeTalk(string sIp, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref string sUpDate, ref StringBuilder sbRecvData);
    }
    #endregion 

    #region HTTP 통신 관련 interface
    /// <summary>
    /// HTTP 통신 관련 interface
    /// </summary>
    public interface INetworkHttp
    {
        /// <summary>
        /// Http GET 방식 요청 - Json 데이터 응답
        /// </summary>
        /// <param name="sUrl"></param>
        /// <param name="sWorkType"></param>
        /// <param name="sReqData"></param>
        /// <param name="sRespJsonData"></param>
        /// <returns></returns>
        int HttpJsonGET_SendReceive(string sUrl, string sWorkType, string sReqData, ref string sRespJsonData);
        /// <summary>
        /// Http POST 방식 Json 데이터 요청 - Json 데이터 응답
        /// </summary>
        /// <param name="sUrl"></param>
        /// <param name="sWorkType"></param>
        /// <param name="htReqData"></param>
        /// <param name="htRspData"></param>
        /// <param name="sRespJsonData"></param>
        /// <returns></returns>
        int HttpJsonPOST_SendReceive(string sUrl, string sWorkType, Hashtable htReqData, ref Hashtable htRspData, ref string sRespJsonData);
        /// <summary>
        /// Http GET 방식 요청 - 응답
        /// </summary>
        /// <param name="sUrl"></param>
        /// <param name="sWorkType"></param>
        /// <param name="sReqData"></param>
        /// <param name="sRespData"></param>
        /// <returns></returns>
        int HttpGET_SendReceive(string sUrl, string sWorkType, string sReqData, string sEncodingFlag, ref string sRespData);

        /// <summary>
        /// 해피버즈 http 통신
        /// </summary>
        /// <param name="sUrl"></param>
        /// <param name="sWorkType"></param>
        /// <param name="htReqData"></param>
        /// <param name="htRspData"></param>
        /// <param name="sRespJsonData"></param>
        /// <returns></returns>
        int HttpJsonPOST_SendReceiveForBuzz(string sUrl, string sWorkType, Hashtable htReqData, ref Hashtable htRspData);

        /// <summary>
        /// 관공서 방문 알림 통신
        /// </summary>
        /// <param name="sUrl"></param>
        /// <param name="sWorkType"></param>
        /// <param name="htReqData"></param>
        /// <param name="htRspData"></param>
        /// <param name="sRespJsonData"></param>
        /// <returns></returns>
        int HttpPOST_SendReceiveForGoverVisit(string sUrl, string sWorkType, Hashtable htReqData, ref Hashtable htRspData);

        // #20170616, 해피앱 스탬프 Start
        /// <summary>
        /// 해피앱 스탬프 http 통신
        /// </summary>
        /// <param name="sUrl"></param>
        /// <param name="htReqData"></param>
        /// <param name="htRspData"></param>
        /// <returns></returns>
        int HttpJsonPOST_SendReceiveForStamp(string sUrl, Hashtable htReqData, ref Hashtable htRspData);
        // #20170616, 해피앱 스탬프 End


        //#20170911.001, Http post 통신 추가 start;girak.kim;
        /// <summary>
        /// Http Post 로 통신(content type 을 파라메타로 설정)
        /// </summary>
        /// <param name="sUrl">연동 서버 url</param>
        /// <param name="sContentType">전송 content type</param>
        /// <param name="sReqString">전송 문자열</param>
        /// <param name="sRespData">응답 문자열</param>
        /// <param name="nConnecLimit">접속수</param>
        /// <returns></returns>
        int HttpPOST_SendReceive(string sUrl, string sContentType, string sReqString, ref string sRespData);
    }
    #endregion 

    #region SPCN 관련 interface
    /// <summary>
    /// SPCN 관련 interface
    /// </summary>
    public interface INetworkVanSPCN
    {
        /// <summary>
        ///  SPCN 승인 공통 함수
        /// </summary>
        /// <param name="sSendData"></param>
        /// <returns></returns>
        //int RequestApproval(string sSendData, string sICData, string sSignData, string sOilData, string sAuthInfo, ref string sRecvData);
    }
    #endregion 

    #region 마스터 기본 인터페이스
    /// <summary>
    /// 마스터 기본 인터페이스
    /// </summary>
    public interface IMasterUs
    {
        ///// <summary>
        ///// 다중행 조회
        ///// </summary>
        //ArrayList LoadMaster(string[] aParam);

        ///// <summary>
        ///// 단일행 조회
        ///// </summary>
        //string SearchMaster(string[] aParam);

        ///// <summary>
        ///// 명 조회
        ///// </summary>
        //string SearchName(string[] aParam);

        /// <summary>
        /// SELECT
        /// </summary>
        DataTable Select(string[] aParam);

        /// <summary>
        /// INSERT
        /// </summary>
        int Insert(string[] aParam);

        /// <summary>
        /// Update
        /// </summary>
        int Update(string[] aParam);

        /// <summary>
        /// Delete
        /// </summary>
        int Delete(string[] aParam);
    }
    #endregion 

    #region SQL 관련 interface
    /// <summary>
    /// SQL 관련 interface
    /// </summary>
    public interface IDatabaseSQL
    {
        /// <summary>
        /// SQL Transction 시작
        /// </summary>
        /// <returns>Tran Saction 성공여부</returns>
        bool Begin();

        /// <summary>
        /// SQL Transaction 실행
        /// </summary>
        /// <returns>SQL Transaction 실행 성공 여부</returns>
        bool Commit();

        /// <summary>
        /// SQL Transction 실행취소
        /// </summary>
        /// <returns>Tran Saction 실행취소 성공여부</returns>
        bool Rollback();

        /// <summary>
        /// SQL Transction 종료
        /// </summary>
        /// <returns>Tran Saction 종료 성공여부</returns>
        void Close();

        /// <summary>
        /// SQL DataTable를 이용한 Select
        /// <para>return -> 1:OK, -1:Connection 정보 에러, -2:SQL 에러, -3:기타 에러, 0:Select 결과 없음</para>
        /// </summary>
        /// <param name="pQuery"></param>
        /// <param name="pDtReturn"></param>
        /// <returns></returns>
        int DBSelect(string pQuery, out DataTable pDtReturn);

        /// <summary>
        /// SQL DataTable를 이용한 UPDATE/DELETE
        /// <para>return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러</para>
        /// </summary>
        /// <param name="pQuery">SQL 실행 명령 문장</param>
        /// <returns></returns>
        int DBExecuteNonQuery(string pQuery);
        int DBExecuteNonQuery(string[] pQuery);
        int DBExecuteNonQuery(string[] pQuery, bool bStandAlone);

        /// <summary>
        /// Database Connection String
        /// </summary>
        /// <param name="pDataSource"></param>
        /// <param name="pInitialCatalog"></param>
        /// <param name="pUID"></param>
        /// <param name="pPassword"></param>
        bool SetDBConnectionString(string pDataSource, string pInitialCatalog, string pUID, string pPassword);
    }
    #endregion 

    #region Oracle 관련 interface
    /// <summary>
    /// Oracle 관련 interface
    /// </summary>
    public interface IDatabaseOracle
    {
        /// <summary>
        /// <para>return -> 1:OK, -1:Connection 정보 에러, -2:Oracle 에러, -3:기타 에러, 0:Select 결과 없음</para>
        /// </summary>
        /// <param name="pQuery"></param>
        /// <param name="pDtReturn"></param>
        /// <returns></returns>
        int DBSelect(string pQuery, out DataTable pDtReturn);

        /// <summary>
        /// Database Connection String
        /// </summary>
        /// <param name="pUID"></param>
        /// <param name="pPWD"></param>
        /// <param name="pDataSource"></param>
        /// <returns></returns>
        bool SetDBConnectionString(string pUID, string pPWD, string pDataSource);

        /// <summary>
        /// <para>return -> 1:OK, -1:Connection 에러, -2:SQL 에러, -3:기타 에러, 0:Select 결과 없음</para>
        /// </summary>
        /// <param name="strCommand">Oracle Query 실행 명령 문장</param>
        /// <returns></returns>
        int DBExecuteNonQuery(string[] pQuery);
    }
    #endregion 

    #region Device 기본 Interface
    /// <summary>
    /// Device 기본 Interface
    /// </summary>
    public interface IDevice
    {
        /// <summary>
        /// 디바이스 Open시 처리함수
        /// </summary>
        /// <param name="sDeviceType">장비종류(ex- "Msr","PosPrinter","Scanner"...)</param>
        /// <param name="sLogicalName">레지스트리 항목(ex- "DefaultMsr","DefaultPosPrinter","DefaultScanner"...)</param>
        /// <returns></returns>
        bool OpenDevice(string sDeviceType, string sLogicalName);

        /// <summary>
        /// 디바이스 Close시 처리함수</para>
        /// </summary>
        /// <returns></returns>
        bool CloseDevice();
    }
    #endregion 

    #region 서버 체크 관련 인터페이스
    /// <summary>
    /// 서버 체크 관련 인터페이스
    /// </summary>
    public interface ICheckOverUs
    {
        /// <summary>
        /// 해피오더 주문 상태별 건수 조회
        /// </summary>
        /// <param name="sRespData"></param>
        /// <returns></returns>
        ///grayber@20180306 해피오더 주문가능 상태 추가 start - 인터페이스 HashTable 인자 추가
        /// 기존
        ///string SelectHappyOrderCountByOrderStatus(Hashtable[] htOrderStatus);
        /// 변경
        string SelectHappyOrderCountByOrderStatus(Hashtable[] htOrderStatus, ref Hashtable htRspData);
        //grayber@20180306 해피오더 주문가능 상태 추가 end

        /// <summary>
        /// 빚은몰 주문 건수 조회
        /// </summary>
        /// <param name="sRespData"></param>
        /// <returns></returns>
        string SelectBizeunOrderCount(string sRespData);
        /// <summary>
        /// 이지웰 주문 건수 조회
        /// </summary>
        /// <param name="sRespData"></param>
        /// <returns></returns>
        string SelectEzwelOrderCount(string sRespData);
        /// <summary>
        /// 온도정보 Http 통신
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string SelectStoreTempInfo(string sRespData);
    }
    #endregion 

    #region PosPrinter 출력 관련 인터페이스
    /// <summary>
    /// PosPrinter 출력 관련 인터페이스
    /// </summary>
    public interface IPosPrinterUs : IDevice
    {
        /// <summary>
        /// 프린터 출력
        /// </summary>
        /// <param name="pPrintData">출력할 데이터 Line 단위 배열</param>
        /// <returns></returns>
        bool ReceiptPrinter(string[] pPrintData);

        /// <summary>
        /// 프린터 출력(해피스테이션용
        /// </summary>
        /// <param name="pPrintData">출력할 데이터 Line 단위 배열</param>
        /// <param name="kiosk">해피스테이션만 사용</param>
        /// <returns></returns>
        bool ReceiptPrinter(string[] pPrintData, bool kiosk);

        /// <summary>
        /// 이미지 Set
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        bool SetLogoBmp();

        /// <summary>
        /// 돈통 Open
        /// </summary>
        void OpenCashDrawer();

        /// <summary>
        /// 프린터 상태체크
        /// </summary>
        /// <returns></returns>
        bool CheckPrinter();

        /// <summary>
        /// 프린터 초기화
        /// </summary>
        void ResetDevice();



        /// <summary>
        /// OPOS사용 디바이스 Open시 처리함수
        /// </summary>
        /// <param name="sDeviceType">장비종류(ex- "Msr","PosPrinter","Scanner"...)</param>
        /// <param name="sLogicalName">레지스트리 항목(ex- "DefaultMsr","DefaultPosPrinter","DefaultScanner"...)</param>
        /// <returns></returns>
        bool OpenDeviceByOPOS(string sDeviceType, string sLogicalName);

        /// <summary>
        /// RS232사용 디바이스 Open시 처리함수
        /// </summary>
        /// <param name="sSerialPort">SerialPort 번호</param>
        /// <param name="lBaudrate">Baudrate</param>
        /// <returns></returns>
        bool OpenDeviceByRS232(string sSerialPort, long lBaudrate);

        /// <summary>
        /// Printer Daemon 시작
        /// </summary>
        void StartPrinterDaemon();

        /// <summary>
        /// Printer Daemon 종료
        /// </summary>
        void StopPrinterDaemon();

        /// <summary>
        /// Printer Buffer에 출력 데이터 추가
        /// </summary>
        /// <param name="arData"></param>
        void AddToPrinterBuffer(byte[] arData);
    }
    #endregion 

    #region CAT 단말기 관련 인터페이스
    /// <summary>
    /// CAT 단말기 관련 인터페이스
    /// </summary>
    public interface ICatTerminalUs
    {

        /// <summary>
        /// 단말기에 저장된 미전송 내역을 받아오는 함수
        /// </summary>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int SPCNSecuCatRemain(ref string sRecvData);
        /// <summary>
        /// 승인/취소 요청
        /// </summary>
        /// <param name="sSendData"></param>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int SPCNSecuCatApprove(string sSendData, ref string sRecvData);
        /// <summary>
        /// 상태체크
        /// </summary>
        /// <param name="sSendData"></param>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int SPCNSecuCatInfo(string sSendData, ref string sRecvData);
        /// <summary>
        /// 연결확인(가동시 체크)
        /// </summary>
        bool SPCNSecuCatStatus();

        ///// <summary>
        ///// 디바이스 OPEN시 처리함수
        ///// </summary>
        ///// <param name="sPortNo">PORT Number</param>
        ///// <param name="lBaudrate">Baudrate</param>
        ///// <param name="lTimeOut">Timeout</param>
        ///// <param name="bIsSync">true:동기, false:비동기</param>
        ///// <returns></returns>
        //bool OpenDevice(string sPortNo, long lBaudRate, long lTimeOut, bool bIsSync);

        ///// <summary>
        ///// 디바이스 CLOSE시 처리함수
        ///// </summary>
        ///// <returns></returns>
        //bool CloseDevice();

        ///// <summary>
        ///// 단말기 연결 상태 및 정보 확인
        ///// </summary>
        //string GetCATInfo();

        ///// <summary>
        ///// 단말기 거래 종료 및 초기화
        ///// </summary>
        //void InitCAT();

        ///// <summary>
        ///// OCX 실행중 수신된 마지막 데이터 반환
        ///// </summary>
        ///// <returns></returns>
        //string GetLastData();

        ///// <summary>
        ///// 신용 승인 요청
        ///// </summary>
        ///// <param name="sCardType"></param>
        ///// <param name="sInstallment"></param>
        ///// <param name="iAmount"></param>
        ///// <param name="iService"></param>
        ///// <param name="iTax"></param>
        ///// <param name="sItemCd"></param>
        ///// <param name="sReserve"></param>
        ///// <param name="sPrintDiv"></param>
        ///// <returns></returns>
        //string ApproveCard(string sCardType, string sInstallment, int iAmount, int iService, int iTax, string sItemCd, string sReserve, string sPrintDiv);

        ///// <summary>
        ///// 신용 취소 요청
        ///// </summary>
        ///// <param name="sCardType"></param>
        ///// <param name="sInstallment"></param>
        ///// <param name="iAmount"></param>
        ///// <param name="iService"></param>
        ///// <param name="iTax"></param>
        ///// <param name="sApproveNo"></param>
        ///// <param name="sApproveDate"></param>
        ///// <param name="sItemCd"></param>
        ///// <param name="sReserve"></param>
        ///// <param name="sPrintDiv"></param>
        ///// <returns></returns>
        //string CancelCard(string sCardType, string sInstallment, int iAmount, int iService, int iTax, string sApproveNo, string sApproveDate, string sItemCd, string sReserve, string sPrintDiv);

        ///// <summary>
        ///// 현금영수증 승인 요청
        ///// </summary>
        ///// <param name="sReceiptType"></param>
        ///// <param name="iAmount"></param>
        ///// <param name="iService"></param>
        ///// <param name="iTax"></param>
        ///// <param name="sItemCd"></param>
        ///// <param name="sReserve"></param>
        ///// <param name="sPrintDiv"></param>
        ///// <returns></returns>
        //string ApproveCash(string sReceiptType, int iAmount, int iService, int iTax, string sItemCd, string sReserve, string sPrintDiv);

        ///// <summary>
        ///// 현금영수증 승인취소 요청
        ///// </summary>
        ///// <param name="sReceiptType"></param>
        ///// <param name="iAmount"></param>
        ///// <param name="iService"></param>
        ///// <param name="iTax"></param>
        ///// <param name="sApproveNo"></param>
        ///// <param name="sApproveDate"></param>
        ///// <param name="sItemCd"></param>
        ///// <param name="sReserve"></param>
        ///// <param name="sPrintDiv"></param>
        ///// <returns></returns>
        //string CancelCash(string sReceiptType, int iAmount, int iService, int iTax, string sApproveNo, string sApproveDate, string sItemCd, string sReserve, string sPrintDiv);

        ///// <summary>
        ///// 포인트 승인 요청
        ///// </summary>
        ///// <param name="sPointType"></param>
        ///// <param name="iAmount"></param>
        ///// <param name="iService"></param>
        ///// <param name="iTax"></param>
        ///// <param name="sPaymentDiv"></param>
        ///// <param name="sItemCd"></param>
        ///// <param name="sReserve"></param>
        ///// <param name="sPrintDiv"></param>
        ///// <returns></returns>
        //string ApprovePoint(string sPointType, int iAmount, int iService, int iTax, string sPaymentDiv, string sItemCd, string sReserve, string sPrintDiv);

        ///// <summary>
        ///// 포인트 취소 요청
        ///// </summary>
        ///// <param name="sPointType"></param>
        ///// <param name="iAmount"></param>
        ///// <param name="iService"></param>
        ///// <param name="iTax"></param>
        ///// <param name="sApproveNo"></param>
        ///// <param name="sApproveDate"></param>
        ///// <param name="sPaymentDiv"></param>
        ///// <param name="sItemCd"></param>
        ///// <param name="sReserve"></param>
        ///// <param name="sPrintDiv"></param>
        ///// <returns></returns>
        //string CancelPoint(string sPointType, int iAmount, int iService, int iTax, string sApproveNo, string sApproveDate, string sPaymentDiv, string sItemCd, string sReserve, string sPrintDiv);
    }
    #endregion 

    #region 사인패드 관련 인터페이스
    /// <summary>
    /// 사인패드 관련 인터페이스
    /// </summary>
    public interface ISignPadUs
    {
        /// <summary>
        /// [사인패드] 전자서명 요청
        /// </summary>
        /// <param name="iAmount"></param>
        /// <param name="sSignDataPath"></param>
        /// <param name="sSignDataName"></param>
        /// <param name="sSignData"></param>
        /// <returns></returns>
        bool GetSign_SignPad(int iAmount, string sSignDataPath, string sSignDataName, ref string sSignData);
        /// <summary>
        /// [사인패드] 전자서명 요청 Ex
        /// </summary>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sMsg4"></param>
        /// <param name="sSignDataPath"></param>
        /// <param name="sSignDataName"></param>
        /// <param name="sSignData"></param>
        /// <returns></returns>
        bool GetSign_SignPadEx(string sMsg1, string sMsg2, string sMsg3, string sMsg4, string sSignDataPath, string sSignDataName, ref string sSignData);
        /// <summary>
        /// [사인패드] 전자서명 요청 터치패드(키오스크,테블릿용)
        /// </summary>
        /// <param name="sSignDataPath"></param>
        /// <param name="sSignDataName"></param>
        /// <param name="sSignData"></param>
        /// <returns></returns>
        bool GetSign_SignPadForTouchpad(string sSignDataPath, string sSignDataName, ref string sSignData);
        /// <summary>
        /// [사인패드] 비밀번호 요청
        /// </summary>
        /// <param name="sMaskedCardNo"></param>
        /// <param name="sEncryptedPwd"></param>
        /// <returns></returns>
        bool GetPin_SignPad(string sMaskedCardNo, ref string sEncryptedPwd);
        /// <summary>
        /// [사인패드] 사용자정보 요청 함수
        /// </summary>
        /// <param name="bMaskingEnable"></param>
        /// <param name="sDisplayMsg"></param>
        /// <param name="sReceivedData"></param>
        /// <returns></returns>
        bool GetMsg_SignPad(bool bMaskingEnable, string sDisplayMsg, ref string sReceivedData);

        /// <summary>
        /// 은련카드 비밀번호 사용자 입력 처리
        /// </summary>
        /// <param name="sMaskedCardNo"></param>
        /// <param name="sEncryptedPwd"></param>
        /// <returns></returns>
        bool GetKioskPin(string sMaskedCardNo, ref string sEncryptedPwd);

        /// <summary>
        /// 비밀번호 입력 처리(해피포인트)
        /// </summary>
        /// <param name="sEncryptedPwd"></param>
        /// <returns></returns>
        bool GetKioskMsg(ref string sEncryptedPwd);

        /// <summary>
        /// [사인패드] 사용자정보 요청 함수
        /// </summary>
        /// <param name="bMaskingEnable"></param>
        /// <param name="sDisplayMsg"></param>
        /// <param name="sReceivedData"></param>
        /// <param name="iMaxLengh"></param>
        /// <returns></returns>
        bool GetMsg_SignPad(bool bMaskingEnable, string sDisplayMsg, ref string sReceivedData, int iMaxLengh);

        /// <summary>
        /// T-Money 운영정보 다운로드
        /// </summary>
        /// <param name="sTerminalNo"></param>
        /// <param name="sBizNm"></param>
        /// <param name="sSeqNo"></param>
        /// <param name="sCardType"></param>
        /// <param name="sDownType"></param>
        /// <returns></returns>
        string TMoneyDownload(string sTerminalNo, string sBizNm, string sSeqNo, string sCardType, string sDownType, ref byte[] rep_array);
        /// <summary>
        /// T-Money 개시
        /// </summary>
        /// <param name="sTerminalNo"></param>
        /// <param name="sBizNm"></param>
        /// <param name="sSeqNo"></param>
        /// <param name="sCardType"></param>
        /// <returns></returns>
        string TMoneyOpen(string sTerminalNo, string sBizNm, string sSeqNo, string sCardType);
        /// <summary>
        /// T-Money 잔액조회
        /// </summary>
        /// <param name="sCardType"></param>
        /// <param name="sRet"></param>
        /// <returns></returns>
        int TMoneyInfo(string sCardType, ref string sRet);
        int TMoneyInfo(string sCardType, ref string sRet, string sBeep);
        /// <summary>
        /// T-Money 지불거래
        /// </summary>
        /// <param name="sTID"></param>
        /// <param name="sCardType"></param>
        /// <param name="sAmount"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sResultMsg"></param>
        /// <returns></returns>
        int TMoneyApprove(string sTID, string sCardType, string sAmount, string sMsg1, string sMsg2, string sMsg3, ref string sResultMsg);
        /// <summary>
        /// T-Money 지불 재거래
        /// </summary>
        /// <param name="sTID"></param>
        /// <param name="sCardType"></param>
        /// <param name="sAmount"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sResultMsg"></param>
        /// <returns></returns>
        int TMoneyApproveRe(string sTID, string sCardType, string sAmount, string sMsg1, string sMsg2, string sMsg3, ref string sResultMsg);
        /// <summary>
        /// T-Money 승인내역 Upload
        /// </summary>
        /// <param name="sTID"></param>
        /// <param name="sbizName"></param>
        /// <param name="sDocSeq"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sOrgAmount"></param>
        /// <param name="sOrgDateTime"></param>
        /// <param name="sOrgTradeNo"></param>
        /// <param name="sRfData"></param>
        /// <param name="sResultMsg"></param>
        /// <returns></returns>
        int TMoneyUploadTran(string sTID, string sbizName, string sDocSeq, string sTradeNo, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, string sRfData, ref string sResultMsg);
        /// <summary>
        /// T-Money 직전취소
        /// </summary>
        /// <param name="sTID"></param>
        /// <param name="sCardType"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sOrgAmount"></param>
        /// <param name="sOrgDateTime"></param>
        /// <param name="sOrgTradeNo"></param>
        /// <param name="sResultMsg"></param>
        /// <returns></returns>
        int TMoneyApproveCancel(string sTID, string sCardType, string sMsg1, string sMsg2, string sMsg3, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, ref string sResultMsg);
        /// <summary>
        /// T-Money 현금반품
        /// </summary>
        /// <param name="sTID"></param>
        /// <param name="sCardType"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sOrgAmount"></param>
        /// <param name="sOrgDateTime"></param>
        /// <param name="sOrgTradeNo"></param>
        /// <param name="sResultMsg"></param>
        /// <returns></returns>
        int TMoneyCashVoid(string sTID, string sCardType, string sMsg1, string sMsg2, string sMsg3, string sTradeNo, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, ref string sResultMsg);
        /// <summary>
        /// T-Money 반품충전
        /// </summary>
        /// <param name="sTID"></param>
        /// <param name="sbizName"></param>
        /// <param name="sDocSeq"></param>
        /// <param name="sCardType"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sOrgAmount"></param>
        /// <param name="sOrgDateTime"></param>
        /// <param name="sOrgTradeNo"></param>
        /// <param name="sResultMsg"></param>
        /// <returns></returns>
        int TMoneyVoidCharge(string sTID, string sbizName, string sDocSeq, string sCardType, string sMsg1, string sMsg2, string sMsg3, string sTradeNo, string sOrgAmount, string sOrgDateTime, string sOrgTradeNo, ref string sResultMsg);


        /// <summary>
        /// 서명패드 업데이트(펌웨어)
        /// </summary>
        /// <returns></returns>
        bool SetFirmware_SignPad_Update(int nCreateCode, string sDatePath);

        /// <summary>
        /// 서명패드 업데이트(동영상)
        /// </summary>
        /// <returns></returns>
        bool SetAvi_SignPad_Update(int nCreateCode, string sDatePath);

        /// <summary>
        /// 서명패드 업데이트(이미지)
        /// </summary>
        /// <returns></returns>
        bool SetImage_SignPad_Update(int nCreateCode, int nIndex, string sDatePath);

        /// <summary>
        /// 서명패드 업데이트(결과코드 리턴)
        /// </summary>
        /// <returns></returns>
        bool SignPad_Update_Return(int nCreateCode, IntPtr nhwnd, int nMessage);

        /// <summary>
        /// 서명패드 업데이트(결과코드 리턴)
        /// </summary>
        /// <returns></returns>
        bool SignPad_Update_Progress_Return(int nCreateCode, IntPtr nhwnd, int nMessage);

        /// <summary>
        /// 서명패드 업데이트 파일 코드(각 함수에 다 넣어 줌)
        /// </summary>
        /// <returns></returns>
        int SignPad_Create_UpdateCode();

        /// <summary>
        /// 서명패드 업데이트 완료 후 시작
        /// </summary>
        /// <returns></returns>
        bool SignPad_Start(int nCreateCode, string sSignPort);

        /// <summary>
        /// 서명패드 업데이트 자원해제
        /// </summary>
        /// <returns></returns>
        int SignPad_Update_Destroy(int nCreateCode);

        /// <summary>
        /// 서명패드 업데이트 취소
        /// </summary>
        /// <returns></returns>
        int SignPad_Update_Stop(int nCreateCode);

        /// <summary>
        /// 서명패드 업데이트 파일초기화
        /// </summary>
        /// <returns></returns>
        int SignPad_Update_FileClear(int nCreateCode);

        /// <summary>
        /// 싸인패드 정보 확인[(O) 응답메시지 (모델명(10) + 펌웨어버젼(20) + App버젼(30) + RF버젼(30) + 시리얼번호(30) + POS연동타입(1)]
        /// </summary>
        /// <param name="sRsltMsg"></param>
        /// <returns></returns>
        bool GetSignPadInfo(ref string sRsltMsg);

        /// <summary>
        /// BitMap -> SignData 변환
        /// </summary>
        /// <param name="sSignDataPath"></param>
        /// <param name="sSignData"></param>
        /// <returns></returns>
        bool GetSign_BmpToData(string sSignDataPath, ref string sSignData);

        /// <summary>
        /// PosDevice.INI --> SpcnPosCfg.ini
        /// </summary>
        void UpdateIniConfig();
    }
    #endregion 

    #region IC 리더기 관련 인터페이스
    /// <summary>
    /// IC 리더기 관련 인터페이스
    /// </summary>
    public interface IICReaderUs
    {
        /// <summary>
        /// 등록제 정보 설정
        /// </summary>
        /// <param name="sDeviceType"></param>
        /// <returns></returns>
        StringBuilder SetAuthInfoString(string sDeviceType);

        /// <summary>
        /// 상태 확인 요청
        /// </summary>
        /// <returns></returns>
        string[] GetStatus_ICReader(string sDeviceType);

        /// <summary>
        /// 카드번호 암호화 요청
        /// </summary>
        /// <param name="sPlainCardNo"></param>
        /// <param name="sEncGB"></param>
        /// <returns></returns>
        //#20170913 현금영수증, 포인트카드 마스킹 미적용 start
        //암호화 할 항목 구분
        //기존
        //string GetEncryptedCardNo(string sPlainCardNo);
        //변경
        string GetEncryptedCardNo(string sPlainCardNo, string sEncGB = "1");
        //#20170913 현금영수증, 포인트카드 마스킹 미적용 end

        /// <summary>
        /// 초기화 요청
        /// </summary>
        /// <returns></returns>
        bool Init_ICReader(string sDeviceType);

        /// <summary>
        /// 시간설정 요청
        /// </summary>
        /// <returns></returns>
        bool SetTime_ICReader(string sDeviceType);

        /// <summary>
        /// 상호인증 요청
        /// </summary>
        /// <param name="sDeviceType"></param>
        /// <param name="sTerminerID"></param>
        /// <returns></returns>
        string KeyDownload_ICReader(string sDeviceType, string sTerminerID);

        /// <summary>
        /// 무결성 검사 요청
        /// </summary>
        /// <param name="sDeviceType"></param>
        /// <param name="sRsltTime"></param>
        /// <returns></returns>
        string IntegrityCheck_ICReader(string sDeviceType, ref string sRsltTime);

        /// <summary>
        /// 카드 정보 요청
        /// </summary>
        /// <param name="iTranType"></param>
        /// <param name="iAmount"></param>
        /// <param name="sRsltMsg"></param>
        /// <returns></returns>
        bool GetCardInfo_ICReader(int iTranType, int iAmount, ref string sRsltMsg);
        bool GetCardInfo_ICReader(int iTranType, int iAmount, ref string sRsltMsg, bool bMask);

        /// <summary>
        /// 발급사 인증 요청
        /// </summary>
        /// <param name="sIcChipData"></param>
        /// <param name="sRsltMsg"></param>
        /// <returns></returns>
        bool CardIssuer_ICReader(string sIcChipData, ref string sRsltMsg);

        /// <summary>
        /// 승인 요청
        /// </summary>
        /// <param name="sInputMsg"></param>
        /// <param name="sSignData"></param>
        /// <param name="sIcData"></param>
        /// <param name="sOilData"></param>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int SpcnCommPos(string sInputMsg, string sSignData, string sIcData, string sOilData, string m_sAuthInfo, ref string sRecvData);

        /// <summary>
        /// 망취소 요청
        /// </summary>
        /// <param name="sReqMsg"></param>
        /// <param name="sResMsg"></param>
        /// <param name="sRecvData"></param>
        /// <returns></returns>
        int SpcnCommPosForNetCancel(string sReqMsg, string sResMsg, ref string sRecvData);

        /// <summary>
        /// SpcnPos.dll 이 사용하는 SpcnPosCfg.ini 파일 update
        /// </summary>
        void UpdateIniConfig(string sSvrIP, string sPort);

        /// <summary>
        /// RF 카드 정보 요청
        /// </summary>
        /// <param name="sSamType"></param>
        /// <param name="sAmount"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sRsltMsg"></param>
        /// <returns></returns>
        bool GetRfCreditCardInfo(string sSamType, string sAmount, string sMsg1, string sMsg2, string sMsg3, ref string sRsltMsg);

        //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인
        /// <summary>
        /// RF 코나머니카드 정보 요청
        /// </summary>
        /// <param name="sSamType"></param>
        /// <param name="sAmount"></param>
        /// <param name="sMsg1"></param>
        /// <param name="sMsg2"></param>
        /// <param name="sMsg3"></param>
        /// <param name="sRsltMsg"></param>
        /// <returns></returns>
        bool GetRfEtcCardInfo(string sSamType, string sAmount, string sMsg1, string sMsg2, string sMsg3, ref string sRsltMsg);

        /// <summary>
        /// SPC 사원 카드 정보 읽기
        /// </summary>
        /// <param name="sRsltMsg"></param>
        /// <returns></returns>
        bool GetSpcEmpCardInfo(ref string sRsltMsg);

        /// <summary>
        /// 선불카드 조회
        /// </summary>
        /// <returns></returns>
        bool RfPrepaidCardInfo(ref string sRsltMsg);

        /// <summary>
        /// IC 콜백 요청
        /// </summary>
        /// <param name="delegateReader"></param>
        /// <returns></returns>
        bool RegIcCallback(PosOLEDevice.DelegateIcReader delegateReader);

        /// <summary>
        /// IC 콜백 해지
        /// </summary>
        /// <returns></returns>
        bool UnRegIcCallback();

        /// <summary>
        /// IC 콜백 설정
        /// </summary>
        /// <returns></returns>
        bool IcReaderSettingDevice(bool bEnable);

        /// <summary>
        /// IC Reader 초기화
        /// </summary>
        void InitializeDevice();

        /// <summary>
        /// IC리더기 펌웨어 업데이트 요청
        /// </summary>
        /// <param name="checkfwtout"></param>
        /// <param name="downfwtout"></param>
        /// <param name="nPort"></param>
        /// <param name="DllCheck"></param>
        /// <param name="sMsg"></param>
        /// <returns></returns>
        bool SetDE_DownloadFW(int checkfwtout, int downfwtout, int nPort, byte[] DllCheck, ref string sMsg);

        //#20171016 IC리더기 펌웨어 업데이트 Start, srlee
        /// <summary>
        /// IC 리더기 펌웨어 업데이트_NEW
        /// </summary>
        /// <param name="nPort"></param>
        /// <param name="nBaud"></param>
        /// <param name="filepath"></param>
        /// <param name="callBackFunc"></param>
        /// <returns></returns>
        int SetDE_FWDOWN(int nPort, int nBaud, byte[] filepath, IntPtr callBackFunc);
        //#20171016 IC리더기 펌웨어 업데이트 End, srlee

        /// <summary>
        /// IC 콜백 요청(CARD INFO)
        /// </summary>
        /// <param name="delegateIcReader"></param>
        /// <returns></returns>
        bool RegIcCallbackCardInfo(string sTmrId, int nCardAmt, PosOLEDevice.CallbackIc delegateIcReader);

        /// <summary>
        /// 카드 배출 요청
        /// </summary>
        bool Exhaust_ICCard();
        /// <summary>
        /// IC 콜백 해지(CARD INFO)
        /// </summary>
        /// <returns></returns>
        bool UnRegIcCallbackCardInfo();
        ///// <summary>
        ///// 디바이스 OPEN
        ///// </summary>
        ///// <param name="sPort"></param>
        ///// <param name="lBaudRate"></param>
        ///// <returns></returns>
        //bool OpenDevice(string sPort, long lBaudRate);

        ///// <summary>
        ///// 디바이스 CLOSE
        ///// </summary>
        ///// <returns></returns>
        //bool CloseDevice();

        ///// <summary>
        ///// IC리더기 초기화
        ///// </summary>
        //void InitICReader();

        ///// <summary>
        ///// IC리더기 무결성검사(비동기)
        ///// </summary>
        //void IntegrityCheck_AsyncReq();
        ///// <summary>
        ///// IC리더기 무결성검사(동기)
        ///// </summary>
        ///// <returns></returns>
        //string IntegrityCheck_SyncReq();

        ///// <summary>
        ///// IC리더기 상태확인(비동기)
        ///// </summary>
        //void MSRInfo_AsyncReq();
        ///// <summary>
        ///// IC리더기 상태확인(동기)
        ///// </summary>
        ///// <returns></returns>
        //string MSRInfo_SyncReq();

        ///// <summary>
        ///// IC리더기 상호인증(비동기)
        ///// </summary>
        //void AuthInfo_AsyncReq();
        ///// <summary>
        ///// IC리더기 상호인증(동기)
        ///// </summary>
        ///// <returns></returns>
        //string AuthInfo_SyncReq();

        ///// <summary>
        ///// IC리더기 암호화키 다운로드 시작(비동기)
        ///// </summary>
        ///// <param name="sRnd">K3 전문 응답 값 중 S_RND 값</param>
        ///// <param name="sHash">K3 전문 응답 값 중 HASH 값</param>
        ///// <param name="sSign">K3 전문 응답 값 중 SIGN 값</param>
        //void KeyDownloadStart_AsyncReq(string sRnd, string sHash, string sSign);
        ///// <summary>
        ///// IC리더기 암호화키 다운로드 시작(동기)
        ///// </summary>
        ///// <param name="sRnd">K3 전문 응답 값 중 S_RND 값</param>
        ///// <param name="sHash">K3 전문 응답 값 중 HASH 값</param>
        ///// <param name="sSign">K3 전문 응답 값 중 SIGN 값</param>
        ///// <returns></returns>
        //string KeyDownloadStart_SyncReq(string sRnd, string sHash, string sSign);

        ///// <summary>
        ///// IC리더기 암호화키 다운로드 완료(비동기)
        ///// </summary>
        ///// <param name="sData">K5 전문 응답 값 중 암호화 데이터 값</param>
        //void KeyDownloadFinish_AsyncReq(string sData);
        ///// <summary>
        ///// IC리더기 암호화키 다운로드 완료(동기)
        ///// </summary>
        ///// <param name="sData">K5 전문 응답 값 중 암호화 데이터 값</param>
        ///// <returns></returns>
        //string KeyDownloadFinish_SyncReq(string sData);

        ///// <summary>
        ///// 카드번호 암호화 요청(비동기)
        ///// </summary>
        ///// <param name="sCardNo"></param>
        ///// <returns></returns>
        //void CardEncryption_AsyncReq(string sCardNo);

        ///// <summary>
        ///// 카드번호 암호화 요청(동기)
        ///// </summary>
        ///// <param name="sCardNo"></param>
        ///// <returns></returns>
        //string CardEncryption_SyncReq(string sCardNo);

        //#20171024 START, PHJ
        string PAY_WAY_CD { set; }
        string PAY_DTL_CD { set; }
        //#20171024 END, PHJ
    }
    #endregion 

    #region 통합동글 관련 인터페이스
    /// <summary>
    /// 통합동글 관련 인터페이스
    /// </summary>
    public interface IUniDongleUs
    {
        /*
                /// <summary>
                /// 디바이스 OPEN시 처리함수
                /// </summary>
                /// <param name="sBaudRate">BaudRate</param>
                /// <param name="sPortNo">Com Port No</param>
                /// <returns></returns>
                bool OpenDevice(string sBaudRate, string sPortNo);

                /// <summary>
                ///  디바이스 Close시 처리함수
                /// </summary>
                /// <returns></returns>
                bool CloseDevice();
                bool CloseDevice(bool bDeviceInit);

                /// <summary>
                /// 전자서명 요청
                /// </summary>
                /// <param name="sSaleDate">영업일자</param>
                /// <param name="sStoreNo">점포번호</param>
                /// <param name="sPosNo">POS번호</param>
                /// <param name="sTranNo">거래번호</param>
                /// <param name="sCardName">카드사명</param>
                /// <param name="sAmount">결제금액</param>
                /// <returns></returns>
                string RunSignPad(string sSaleDate, string sStoreNo, string sPosNo, string sTranNo, string sCardName, string sAmount);

                /// <summary>
                /// 전자서명 초기화
                /// </summary>
                void ClearSignData();

                /// <summary>
                /// 전자서명 종료
                /// </summary>
                void EndSign();

                /// <summary>
                /// 전자서명 저장
                /// </summary>
                /// <returns>SignData</returns>
                string SaveSign();

                /// <summary>
                /// 고객식별번호 입력 요청
                /// </summary>
                void GetCustomerNo();

                /// <summary>
                /// 암호화되지 않은 핀패드 입력 요청
                /// </summary>
                /// <param name="sCardNo">카드번호</param>
                void RunPinPadNormal(string sCardNo);

                /// <summary>
                /// 암호화된 핀패드 입력 요청
                /// </summary>
                /// <param name="sCardNo">카드번호</param>
                void RunPinPadEncrypt(string sCardNo);

                /// <summary>
                /// 사원카드 인증 요청
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                void GetIDCard(string sSeqNo, string sTerminalNo);

                /// <summary>
                /// 동글 요청
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                void RunDongle(string sSeqNo, string sTerminalNo);

                /// <summary>
                /// 현금IC카드 요청
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                /// <param name="sCashAmount">결제금액</param>
                /// <param name="sTranType">TranType</param>
                void RunCashICCard(string sSeqNo, string sTerminalNo, string sCashAmount, string sTranType);

                /// <summary>
                /// NFC신용카드 요청
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                void RunNFCCredit(string sSeqNo, string sTerminalNo);

                /// <summary>
                /// NFC 멤버십 요청
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                void RunNFCMembership(string sSeqNo, string sTerminalNo);

                /// <summary>
                /// NFC신용카드 + 멤버십
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                void RunNFCCreditMembership(string sSeqNo, string sTerminalNo);

                /// <summary>
                /// NFC 취소
                /// </summary>
                void RunNFCCancle();

                /// <summary>
                /// 선불 + 멤버십
                /// </summary>
                /// <param name="sSeqNo">SeqNo</param>
                /// <param name="sTerminalNo">TerminalNo</param>
                void RunBCCard(string sSeqNo, string sTerminalNo);

                /// <summary>
                /// DCC 통화 선택
                /// </summary>
                /// <param name="sSeqNo">거래일련번호(7Byte)</param>
                /// <param name="sCurCd">현지통화코드(3Byte)</param>
                /// <param name="sCurAmt">현지 통화금액(10Byte)</param>
                /// <param name="sTranCurCd">(원화) 통화코드(3Byte)</param>
                /// <param name="sTranCurAmt">(원화) 통화금액(10Byte)</param>
                /// <param name="sInvertedRate">환율정보(38Byte)</param>
                /// <returns></returns>
                bool RunDCCCredit(string sSeqNo, string sCurCd, string sCurAmt, string sTranCurCd, string sTranCurAmt, string sInvertedRate);

                /// <summary>
                /// DCC 통화 선택취소
                /// </summary>
                /// <returns></returns>
                bool RunDccCancel();

                /// <summary>
                /// 동글이 LOGON, 장비 설치 후 한번 만 실행
                /// </summary>
                /// <param name="sTerminalNo"></param>
                /// <returns></returns>
                bool DongleLogOn(string sTerminalNo);

                /// <summary>
                /// Dongle 펌웨어 업데이트
                /// </summary>
                /// <param name="bVisible">업데이트관련 에러메세지 팝업창 출력 여부</param>
                /// <returns></returns>
                bool DongleFirmwareUpdate(bool bVisible);
         */
    }
    #endregion 

    #region T-PAY BLE Dongle
    /// <summary>
    /// T-PAY BLE Dongle 
    /// </summary>
    public interface ITPaygleUs
    {
        /// <summary>
        /// 체크인 고객리스트 수신 
        /// </summary>
        /// <param name="phoneList">고객리스트(JSON Format)</param>
        /// <returns>체크인된고객수</returns>
        int GetConnectList(out string phoneList);
        /// <summary>
        /// 체크인 고객리스트 수신 
        /// </summary>
        /// <param name="phoneList">Column.TPAY_CONNECT_INFO Class</param>
        /// <returns></returns>
        int GetConnectList(out Column.TPAY_CONNECT_INFO phoneList);

        /// <summary>
        /// 선택된 XPT 단말기(스마트폰)에 BLE BOT 발급 요청
        /// </summary>
        /// <param name="xpt">결제키 발급대상 단말기 식별코드</param>
        /// <param name="posID">요청POS식별번호</param>
        /// <param name="deviceType">장비구분(001:안드로이드, 002:iOS)</param>
        /// <returns></returns>
        bool ReqPosProvide(string xpt, string posID, string deviceType, out string errMsg);

        /// <summary>
        /// BLE OTB 수신
        /// </summary>
        /// <param name="result">성공:OTB, 실패:오류메시지</param>
        /// <returns></returns>
        bool GetOTB(out string result);

        /// <summary>
        /// 수신된 비밀번호를 40Byte 해시코드로 변환
        /// </summary>
        /// <param name="password"></param>
        /// <returns></returns>
        string GetHashPassword(string password);

        /// <summary>
        /// 설치된 Paygle 상태를 체크하고 펌웨어를 업데이트
        /// </summary>
        /// <returns></returns>
        bool CheckPaygle();

        //#20170906 T페이 고도화 작업 phj, start
        int ClassifyOTBCheck(string pOTB);
        //#20170906 T페이 고도화 작업 phj, end

        //#20170906 T페이 고도화 작업 phj, start
        string ClassifyOTBCheckMsg(string pOTB);
        //#20170906 T페이 고도화 작업 phj, end
    }
    #endregion 

    #region Scale 관련 인터페이스
    /// <summary>
    /// Scale 관련 인터페이스
    /// </summary>
    public interface IScaleUs
    {
        /// <summary>
        /// 유선저울 OPEN 처리 함수
        /// </summary>
        /// <param name="sSerialPort"></param>
        /// <param name="lBaudrate"></param>
        /// <returns></returns>
        bool OpenDevice(string sSerialPort, long lBaudrate);
        /// <summary>
        /// 유선저울 CLOSE 처리 함수
        /// </summary>
        /// <returns></returns>
        bool CloseDevice();
        /// <summary>
        /// 유선저울 0점 조정
        /// </summary>
        void ScaleCalibration();
        /// <summary>
        /// 유선저울 무게 측정
        /// </summary>
        void ScaleWeigh();
    }
    #endregion 

    #region 무선저울 관련 인터페이스
    /// <summary>
    /// 무선저울 관련 인터페이스
    /// </summary>
    public interface IWirelessScaleUs
    {
        /// <summary>
        /// 무선저울 OPEN 처리 함수
        /// </summary>
        /// <param name="sSerialPort"></param>
        /// <param name="lBaudrate"></param>
        /// <returns></returns>
        bool OpenDevice(string sSerialPort, long lBaudrate);
        /// <summary>
        /// 무선저울 CLOSE 처리 함수
        /// </summary>
        /// <returns></returns>
        bool CloseDevice();
    }
    #endregion 

    #region 라벨프린터 관련 인터페이스
    /// <summary>
    /// 라벨프린터 관련 인터페이스
    /// </summary>
    public interface ILabelPrinterUs
    {
        /// <summary>
        /// 라벨프린터 OPEN 처리 함수
        /// </summary>
        /// <param name="sSerialPort"></param>
        /// <param name="lBaudrate"></param>
        /// <returns></returns>
        bool OpenDevice(string sSerialPort, long lBaudrate);
        /// <summary>
        /// 라벨프린터 CLOSE 처리 함수
        /// </summary>
        /// <returns></returns>
        bool CloseDevice();
        /// <summary>
        /// 일반 제품정보 라벨 프린터 출력 함수
        /// </summary>
        /// <param name="sProductNm_Ko">제품명(한글) ex)"파인트"</param>
        /// <param name="sProductNm_En">제품명(영문) ex)"Pint"</param>
        /// <param name="sWeight">중량 ex)"340g"</param>
        /// <param name="sStoreNm">점포명 ex)"양재사옥점"</param>
        void PrintProductWeightInfo(string sProductNm_Ko, string sProductNm_En, string sWeight, string sStoreNm);
        /// <summary>
        /// 02O(해피오더) 제품정보 라벨 프린터 출력 함수
        /// </summary>
        /// <param name="sProductNm">제품명 ex)"패밀리"</param>
        /// <param name="sOrderNo">주문번호 ex)"123456"</param>
        /// <param name="sWeight">중량 ex)"990g"</param>
        /// <param name="sContent_1">ex) "플레이버1/플레이버2/플레이버3"</param>
        /// <param name="sContent_2">ex) "플레이버4/플레이버5/플레이버6"</param>
        /// <param name="sStoreNm">점포명 ex)"양재사옥"</param>
        /// <param name="sOrderYmdhms">주문시간 ex)"2016-06-23 14:00:00"</param>
        /// <param name="sPackingYmdhms">포장시간 ex)"2016-06-23 14:20:00"</param>
        void PrintO2OProductInfo(string sProductNm, string sOrderNo, string sWeight, string sContent_1, string sContent_2, string sStoreNm, string sOrderYmdhms, string sPackingYmdhms);
        /// <summary>
        /// 바코드 출력 라벨 프린터 출력 함수
        /// </summary>
        /// <param name="sProductNm_Ko">제품명(한글) ex)"파인트"</param>
        /// <param name="sBarcode_Data">바코드 ex)"zxcgfdsgfhgsf"</param>
        /// <param name="sStoreNm">점포명 ex)"양재사옥점"</param>
        void PrintProductBarCodeInfo(string sProductNm_Ko, string sBarcode_Data, string sStoreNm);
    }
    #endregion 

    #region Cashdrawer 관련 인터페이스
    /// <summary>
    /// Cashdrawer 관련 인터페이스
    /// </summary>
    public interface ICashdrawerUs : IDevice
    {
        /// <summary>
        /// 돈통 개방
        /// </summary>
        void OpenCashDrawer();
    }
    #endregion 

    #region Msr 제어 관련 인터페이스
    /// <summary>
    /// Msr 제어 관련 인터페이스
    /// </summary>
    public interface IMsrUs : IDevice
    {
        /// <summary>
        /// 장비의 Event 발생 Enable 상태 설정
        /// <para>True:사용가능, False:사용불가능</para>
        /// </summary>
        bool DeviceEnabled { get; set; }
    }
    #endregion 

    #region Scanner 제어 관련 인터페이스
    /// <summary>
    /// Scanner 제어 관련 인터페이스
    /// </summary>
    public interface IScannerUs : IDevice
    {
        /// <summary>
        /// 장비의 Event 발생 Enable 상태 설정
        /// <para>True:사용가능, False:사용불가능</para>
        /// </summary>
        bool DeviceEnabled { get; set; }
    }
    #endregion 

    #region LineDisplay
    /// <summary>
    /// LineDisplay
    /// </summary>
    public interface ILineDisplayUs
    {
        /// <summary>
        /// 유선저울 OPEN 처리 함수
        /// </summary>
        /// <param name="sSerialPort"></param>
        /// <param name="lBaudrate"></param>
        /// <returns></returns>
        bool OpenDevice(string sSerialPort, long lBaudrate);
        /// <summary>
        /// 유선저울 CLOSE 처리 함수
        /// </summary>
        /// <returns></returns>
        bool CloseDevice();
        /// <summary>
        /// LineDisplay에 출력
        /// </summary>
        /// <param name="sLine1"></param>
        /// <param name="sLine2"></param>
        /// <param name="sLine3"></param>
        /// <returns></returns>
        bool DisplayText(int iAmt, string sMsg);
        /// <summary>
        /// LineDisplay 초기화
        /// </summary>
        /// <returns></returns>
        bool DisplayClear();
    }
    #endregion 

    #region 수정필요 PSS
    // 수정필요 PSS
    //public interface IPosReceipt
    //{
    //    //저장 저장...
    //    string Execute(string[] aParam);

    //    string GetData(string[] aParam);

    //    string ExecutePrint(string[] aParam);

    //    string MakePosSaleReceipt(string[] aParam);

    //    bool MakePosClaimReceipt();

    //    string MakePosEtcReceipt(DataTable pEtcReceipt);
    //}
    #endregion 

    #region 판매 기본
    /// <summary>
    /// 판매 기본 
    /// </summary>
    public interface ISaleBasic
    {

    }
    #endregion 

    #region 보류 거래
    /// <summary>
    /// 보류 거래
    /// </summary>
    public interface IHoldDeal
    {
        /// <summary>
        /// 보류 거래 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <returns></returns>
        DataTable SearchHoldDealList(string sSaleDate);

        /// <summary>
        /// 보류 거래 영수증 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        DataTable SearchHoldDealPrint(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 보류 거래 상태 변경(삭제, 불러오기)
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sStats"></param>
        /// <returns></returns>
        int UpdateHoldDeal(string sSaleDate, string sPosNo, string sTradeNo, string sStats, double dQty, double dSaleAmt);

        /// <summary>
        /// 보류 영수증 출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <returns></returns>
        bool PrintHoldDeal(string sPrtData);

        /// <summary>
        /// 보류 매출 불러오기
        /// </summary>
        /// <param name="drTrItem"></param>
        /// <returns></returns>
        bool LoadLocalTranPlu(string sSaleDate, string sPosNo, string sTradeNo);

        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
        //기존
        /*
        //17.05.18 dkshin 쇼킹박스 추가
        /// <summary>
        /// 쇼킹박스 거래 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <returns></returns>
        DataTable SearchShockingBoxDealList(string sInPutData);
        */

        //변경
        // sInPutData : sale_dt + reg_no
        // sTradeKind : 99 :쇼킹박스, 60 : 랜덤박스
        // sTradeStat : 0: 거래상태조회 , 1: 거래상태미조회 
        DataTable SearchShockingBoxDealList(string sInPutData, string sTradeKind, string sTradeStat);
        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end



        //17.05.18 dkshin 쇼킹박스 추가
        /// <summary>
        /// 쇼킹박스 거래 상태 변경
        /// </summary>
        /// <returns></returns>
        int UpdateShockingBOX();

        //17.05.18 dkshin 쇼킹박스 추가
        /// <summary>
        /// 쇼킹박스 거래 상태 변경
        /// </summary>
        /// <returns></returns>
        DataTable SearchShockingBoxPayCompleteList(string sSaleDate, string sTradeNo);

        //17.05.18 dkshin 쇼킹박스 추가
        /// <summary>
        /// 쇼킹박스 거래 상태 변경
        /// </summary>
        /// <returns></returns>
        int UpdateShockingBOXPayComplete(string sSaleDate, string sPosNo, string sTradeNo);

    }
    #endregion 

    #region 예약매출
    /// <summary>
    /// 예약매출
    /// </summary>
    public interface ISaleReserved
    {
        /// <summary>
        /// 예약 거래 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sTradType"></param>
        /// <param name="sCondition"></param>
        /// <param name="sOnOffLine"></param>
        /// <returns></returns>
        DataTable SearchReservedFinshList(string sSaleDate, string sTradType, string sCondition, string sOnOffLine);

        /// <summary>
        /// 예약 거래 영수증 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        DataTable SearchReservedFinshPrint(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 예약 영수증 출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <returns></returns>
        bool PrintReservedFinsh(string sPrtData);

        /// <summary>
        /// 예약 거래 로드(로컬)
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="bRetrun"></param>
        /// <returns></returns>
        bool LoadLocalTran(string sSaleDate, string sPosNo, string sTradeNo, bool bRetrun);

        /// <summary>
        /// 예약 거래 로드(서버)
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="bRetrun"></param>
        /// <returns></returns>
        string SearchServerTran(string sSaleDate, string sPosNo, string sTradeNo, bool bRetrun);

        //#Rhee, 20180117 픽업 진행 추가 start
        /// <summary>
        /// 예약거래 픽업
        /// </summary>
        /// <param name="sCmpCd"></param>
        /// <param name="sStorCd"></param>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sSendYn"></param>
        /// <returns></returns>
        string PickupReservedCom(string sCmpCd, string sStorCd, string sSaleDate, string sPosNo, string sTradeNo, string sSendYn);
        //#Rhee, 20180117 픽업 진행 추가 end
    }
    #endregion

    #region 판매 영수증 출력
    /// <summary>
    /// 판매 영수증 출력
    /// </summary>
    public interface ISaleReceipt
    {

        /// <summary>
        /// 영수증 출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <returns></returns>
        bool PrintSaleReceipt(string sPrtData);
        /// <summary>
        /// 거래조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="TradeType"></param>
        /// <returns></returns>
        DataTable SearchSaleReceiptList(string sSaleDate, string sPosNo, string sTradeNo, string sPayTime, string sTradeType);
        ///// <summary>
        ///// 매출불러오기
        ///// </summary>
        ///// <param name="sSaleDate"></param>
        ///// <param name="sPosNo"></param>
        ///// <param name="sTradeNo"></param>
        ///// <returns></returns>
        //string SetTrItem(string sSaleDate, string sPosNo, string sTradeNo);
        /// <summary>
        /// 거래반품
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool ReturnSaleReceipt(string sSaleDate, string sPosNo, string sTradeNo);
        /// <summary>
        /// 거래 영수증 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        DataTable SearchPritSaleReceiptDetail(string sSaleDate, string sPosNo, string sTradeNo);
        /// <summary>
        /// 프린터 출력
        /// </summary>
        /// <param name="sPrtData"></param>
        /// <returns></returns>
        bool PrintReceipt(string sPrtData);
    }
    #endregion 

    #region 해피기프트 조회/충전/취소/환불
    /// <summary>
    /// 해피기프트 조회/충전/취소/환불
    /// </summary>
    public interface IHpGift
    {
        /// <summary>
        /// 해피기프트 거래 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <returns></returns>
        DataTable HpGiftSearchList(string sSaleDate, string sTradeType);

        /// <summary>
        /// 해피기프트 잔액 조회
        /// </summary>
        /// <param name="sCardNo"></param>
        /// <param name="dChargeAmt"></param>
        /// <returns></returns>
        double HpGiftSearchRemainAmt(string sCardNo);

        /// <summary>
        /// 해피기프트 충전
        /// </summary>
        /// <param name="sCardNo"></param>
        /// <param name="dChargeAmt"></param>
        /// <returns></returns>
        bool HpGiftChargeAppy(string sCardNo, double dChargeAmt);

        /// <summary>
        /// 해피 기프트 취소
        /// </summary>
        /// <param name="sCardNo"></param>
        /// <param name="dRetrunChargeAmt"></param>
        /// <returns></returns>
        bool HpGiftCancelChargeAppy(string sCardNo, double dRetrunChargeAmt);

        /// <summary>
        /// 해피 기프트 환불
        /// </summary>
        /// <param name="sCardNo"></param>
        /// <param name="dRetrunChargeAmt"></param>
        /// <returns></returns>
        bool HpGiftReturnChargeAppy(string sCardNo, double dRetrunChargeAmt);

        /// <summary>
        /// 영수증 조회 출력
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sRegNo"></param>
        /// <returns></returns>
        bool HpGiftSearchPrint(string sSaleDate, string sPosNo, string sRegNo);

    }
    #endregion 

    #region 반품 처리
    /// <summary>
    /// 반품 처리
    /// </summary>
    public interface ISaleRefundUs
    {
        /// <summary>
        /// 영수증 반품 대상 거래 데이터 리스트 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sPayTime"></param>
        /// <param name="sTradeType"></param>
        /// <returns></returns>
        DataTable SearchSaleReceiptList(string sSaleDate, string sPosNo, string sTradeNo, string sPayTime, string sTradeType);

        /// <summary>
        /// 거래 영수증 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        string SearchPrintSaleReceiptDetail(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 영수증 반품 대상 로컬 거래 데이터 로딩
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool LoadLocalTran(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 영수증 반품 대상 거래 데이터 서버 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="SaleTime"></param>
        /// <returns></returns>
        string SearchServerTran(string sSaleDate, string sPosNo, string sTradeNo, string SaleTime);

        /// <summary>
        /// 상품불러오기를 위한 거래 데이터 상품 정보 만 로딩
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool LoadLocalTranPlu(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 영수증 반품 가능 여부 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool ChekcRefundTran(string sSaleDate, string sPosNo, string sTradeNo);

        //#해피앱 추후적립 start, sskim
        /// <summary>
        /// 해피앱 추후적립 데이터 서버 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sVisibleMode"></param>
        /// <returns></returns>
        string SearchServerHpAppSave(string sSaleDate, string sPosNo, string sTradeNo, bool sVisibleMode);
        //#해피앱 추후적립 end, sskim

        //2017-06-02 dkshin 해피앱 추후적립
        bool SearchTrHpAppAfterSaveYN(string sSaleDate, string sPosNo, string sTradeNo);
        //2017-06-02 dkshin 해피앱 추후적립
        bool Refund_HPAPP_After_Update_Tran(string sSaleDate, string sPosNo, string sTradeNo);
    }
    #endregion 

    #region 해피포인트 사후적립 처리
    /// <summary>
    /// 해피포인트 사후적립 처리
    /// </summary>
    public interface IHpAfterSaveUs
    {
        /// <summary>
        /// 사후적립 대상 거래 데이터 리스트 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sTradeType"></param>
        /// <returns></returns>
        DataTable SearchSaleReceiptList(string sSaleDate, string sPosNo, string sTradeNo, string sPayTime, string sTradeType);

        /// <summary>
        /// 거래 영수증 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        string SearchPrintSaleReceiptDetail(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 사후적립 대상 로컬 거래 데이터 로딩
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool LoadLocalTran(string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 사후적립 대상 거래 데이터 서버 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="sPayTime"></param>
        /// <returns></returns>
        string SearchServerTran(string sSaleDate, string sPosNo, string sTradeNo, string sPayTime);

        /// <summary>
        /// 영수증 추후적립 가능 여부 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool ChekcAfterSaveTran(string sSaleDate, string sPosNo, string sTradeNo);

        //2017-06-02 dkshin 해피앱 추후적립
        /// <summary>
        /// 해피앱 추후적립 상태 변경
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        bool HPAPP_After_Update_Tran(string sSaleDate, string sPosNo, string sTradeNo);
    }
    #endregion 

    #region 아워홈 관련 인터페이스
    /// <summary>
    /// 아워홈 관련 인터페이스
    /// </summary>
    public interface IOurHome
    {
        /// <summary>
        /// 고객정보 조회
        /// </summary>
        /// <param name="sStoreCD"></param>
        /// <param name="sRFNo"></param>
        /// <param name="sRFType"></param>
        /// <returns></returns>
        string Rf_EmpInfo(string sStoreCD, string sRFNo, string sRFType);
        /// <summary>
        ///  결제
        /// </summary>
        /// <param name="sStoreCD"></param>
        /// <param name="sTranData"></param>
        /// <param name="sRfType"></param>
        /// <returns></returns>
        string Rf_TransData(string sStoreCD, string sTranData, string sRfType);
    }
    #endregion 

    #region VAN 기본모듈 처리 처리
    /// <summary>
    /// VAN 기본모듈 처리 처리
    /// </summary>
    public interface IVanCommonUs
    {
        /// <summary>
        /// 키 다운로드 요청
        /// </summary>        
        /// <returns></returns>
        string KeyDownLoad(string[] aParam);

        /// <summary>
        /// 룰파일 다운로드 요청
        /// </summary>        
        /// <returns></returns>
        string RuleFileDownLoad(string[] aParam);
    }
    #endregion 

    #region 마스터 다운로드 처리
    /// <summary>
    /// 마스터 다운로드 처리
    /// </summary>
    public interface IMasterDownUs
    {
        /// <summary>
        /// 다운로드 처리
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string Execute(object[] aParam);

        object GetData(string[] aParam);

        /// <summary>
        /// 긴급 적용 마스터 리스트 조회
        /// </summary>
        /// <returns></returns>
        DataTable SelectEmergencyMasterList();

        /// <summary>
        /// 긴급 적용 구분자 초기화
        /// </summary>
        /// <returns></returns>
        int UpdateEmergencyMasterList();

        /// <summary>
        /// 마스터 다운로드 취소Flag
        /// </summary>
        bool IsAborted { get; set; }
    }
    #endregion 

    #region 해피오더 조회 처리
    /// <summary>
	/// 해피오더 조회 처리
	/// </summary>
    public interface IHappyOrderList
    {
        /// <summary>
        /// 주방상품 처리
        /// </summary>
        /// <param name="sTradeDiv"></param>
        /// <param name="alHappyOrderItem"></param>
        void KPSItemProc(string sTradeDiv, ArrayList alHappyOrderItem);

        /// <summary>
        /// 영수증 출력데이터 생성
        /// </summary>
        /// <param name="sPrtHead"></param>
        /// <param name="sPrtFmt"></param>
        /// <param name="sData"></param>
        void AddPrintData(string sPrtHead, string sPrtFmt, string sData);

        /// <summary>
        /// 영수증 출력데이터 생성
        /// </summary>
        /// <param name="sPrtHead"></param>
        /// <param name="sPrtFmt"></param>
        /// <param name="sData1"></param>
        /// <param name="sData2"></param>
        void AddPrintData(string sPrtHead, string sPrtFmt, string sData1, string sData2);

        /// <summary>
        /// 영수증 버퍼 초기화
        /// </summary>
        void PrintBufClear();

        /// <summary>
        /// 영수증 버퍼 반환
        /// </summary>
        /// <returns></returns>
        ArrayList GetPrintBufferData();

        /// <summary>
        /// 해피오더 내역조회 데이터 파싱 처리
        /// </summary>
        /// <param name="htData"></param>
        /// <returns></returns>
        Column.TR_HPORD.HPORD_HEADER ParseHappyOrderList(Hashtable htData);

        /// <summary>
        /// 해피오더 상세내역 조회
        /// </summary>
        /// <param name="sOrderNum"></param>
        /// <param name="sUrl"></param>
        /// <param name="cHappyOrderItem"></param>
        /// <param name="htOrderLists"></param>
        void GetHappyOrderListDetail(string sOrderNum, string sUrl, ref ArrayList cHappyOrderItem, ref Hashtable[] htOrderLists);

        /// <summary>
        /// 해피오더 오늘 픽업/배달 주문서출력 건 조회
        /// </summary>
        /// <returns></returns>
        DataTable GetTodayHappyOrder();

        /// <summary>
        /// 해피오더 데이터 삭제
        /// </summary>
        /// <param name="sOrderNum"></param>
        /// <returns></returns>
        int DeleteHappyOrderData(string sOrderNum, string sOrderDt);

        //17.08.22 dkshin SS 해피오더
        /// <summary>
        /// 해피오더 데이터 삭제
        /// </summary>
        /// <param name="sOrderNum"></param>
        /// <returns></returns>
        int DeleteSSHappyOrderData(string sOrderNum, string sOrderDt);

        //17.08.22 dkshin SS 해피오더
        /// <summary>
        /// 해피오더 데이터 삭제
        /// </summary>
        /// <param name="sOrderNum"></param>
        /// <returns></returns>
        int DeleteSSHappyOrderMSG(string sOrderNum);

        /// <summary>
        /// 해피오더 데이터 조회
        /// </summary>
        /// <param name="sOrderNum">주문번호</param>
        /// <param name="sOrderDt">주문일자</param>
        /// <returns></returns>
        DataTable GetHappyOrderData(string sOrderNum, string sOrderDt);

        /// <summary>
        /// 해피오더 데이터 갱신
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        int UpdateHappyOrderData(string[] aParam);

        /// <summary>
        /// 해피오더 데이터 저장
        /// </summary>
        /// <param name="header"></param>
        /// <returns></returns>
        int SaveHappyOrderData(Column.TR_HPORD.HPORD_HEADER header);

        string ParseNutritionMsg(Hashtable[] htNutritionMsgs);

        /// <summary>
        /// 해피오더 전문 처리
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        Hashtable[] SendReceiveForHappyOrder(object[] aParam, ref Hashtable htResponse, ref int iReturn);

        /// <summary>
        /// 해피오더 Json 데이터 파싱
        /// </summary>
        /// <param name="sJsonString"></param>
        /// <returns></returns>
        Hashtable[] ParseJsonString(string sJsonString);

        /// <summary>
        /// 해피오더 주문서 출력
        /// </summary>
        /// <returns></returns>
        //#16366 해피오더 당월누적주문내역 + 당일 해피오더주문 상세내역 자동 출력기능 start
        //기존
        //bool PrintOrderSheet();
        //변경
        bool PrintOrderSheet(string sPrtGubun, bool bHPOAutoPrintYN);
        //#16366 해피오더 당월누적주문내역 + 당일 해피오더주문 상세내역 자동 출력기능 end


        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
        //기존
        /*
        /// <summary>
        /// Tran 생성
        /// </summary>
        /// <param name="cHeader"></param>
        /// <param name="aItem"></param>
        /// <returns></returns>
        string MakeTranItem(Column.TR_HPORD.HPORD_HEADER cHeader, ArrayList aItem);
        */
        //변경
        string MakeTranItem(Column.TR_HPORD.HPORD_HEADER cHeader, ArrayList aItem, Hashtable htReadingBarCodeInfo);
        //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end

        //#20171215, 해피오더 주문리스트 조회 시 해피오더 테이블 데이터 삭제 후 저장하도록 수정 Start
        /// <summary>
        /// 해피오더 데이터 전체 삭제
        /// </summary>
        /// <returns></returns>
        int DeleteHappyOrderAllData();
        //#20171215, 해피오더 주문리스트 조회 시 해피오더 테이블 데이터 삭제 후 저장하도록 수정 End

        //grayber@20180202 [BR]해피오더 고객정보 추가 + 원산지 표기 start - 파라메터 변경
        //grayber20180201 해피오더 고객정보 추가 + 원산지 표기 #13780 start
        /// <summary>
        /// 해피오더 영양정보 리스트 조회
        /// </summary>
        /// <param name="sOrderNum">주문번호</param>
        /// <param name="sUrl">해피오더 URL</param>
        /// <param name="cHappyOrderItem">출력영양정보리스트</param>
        /// <param name="htOrderNutritionLists">수신영양정보데이터</param>
        //void GetHappyOrderNurtitionListDetail(string sOrderNum, string sUrl, ref ArrayList cHappyNurtitionOrderItem, ref Hashtable[] htOrderNutritionLists);
        //grayber20180201 해피오더 고객정보 추가 + 원산지 표기 #13780 end


        //grayber20180201 해피오더 고객정보 추가 + 원산지 표기 #13780 start
        /// <summary>
        /// 해피오더 영양정보 리스트 조회
        /// </summary>
        /// <param name="sOrderNum">주문번호</param>
        /// <param name="sUrl">해피오더 URL</param>
        /// <param name="sOrderDt">주문일자</param>
        void GetHappyOrderNurtitionListDetail(string sOrderNum, string sUrl, string sOrderDt);
        //grayber20180201 해피오더 고객정보 추가 + 원산지 표기 #13780 end
        //grayber@20180202 [BR]해피오더 고객정보 추가 + 원산지 표기 end


        //#15945 해피오더 자동주문 상세기능 start
        void HappyOrder_AutomaticShipmentLog(Column.TR_HPORD.HPORD_HEADER HPORD_HEADER, string HPORD_TOBESTATUS, string HPORD_CLOUDRES);
        //#15945 해피오더 자동주문 상세기능 end

        //#17143 [해피오더]자동 주문 처리 개선 start
        //기존
        //#15945 해피오더 자동주문 상세기능 start
        /// <summary>
        /// 해피오더 자동출하 제품 여부 체크 
        /// HappyOrderItem: 주문상세
        /// HappyOrderStatus: 주문상태
        /// DivYN: true - 자동출하 주문 건, false - 일반 주문 건 
        /// </summary>
        //bool HappyOrder_AutomaticShipmentItemCheck(ArrayList HappyOrderItem, string HappyOrderStatus, out bool DivYN);
        //#15945 해피오더 자동주문 상세기능 end

        //변경
        bool HappyOrder_AutomaticShipmentItemCheck(ArrayList HappyOrderItem, string HappyOrderStatus, string OrderData, string PickupData, out bool AutomaticShipment);
        //#17143 [해피오더]자동 주문 처리 개선 end

        //#16366 해피오더 당월누적주문내역 + 당일 해피오더주문 상세내역 자동 출력기능 start
        // 당월누계건
        bool HappyOrderToMonthPrint(bool bHPOAutoPrintYN);
        // 당일픽업건
        bool HappyOrderTodayPrint(bool bHPOAutoPrintYN);
        //#16366 해피오더 당월누적주문내역 + 당일 해피오더주문 상세내역 자동 출력기능 end  
    }
    #endregion 

    #region 점착정보 조회 처리
    /// <summary>
    /// 점착정보 조회 처리
    /// </summary>
    public interface IStorArrvList
    {
        /// <summary>
        /// 점착정보
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string SendReceiveForStorArrInfo(object[] aParam, ref DataTable htResponse, ref int iReturn);

        /// <summary>
        /// 점착정보 배송URL
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        object GetData(string[] aParam);
    }
    #endregion 

    #region 당일 거래 서버 조회
    /// <summary>
    /// 당일 거래 서버 조회
    /// </summary>
    public interface ISvr2Tran
    {
        /// <summary>
        /// 최종 거래번호, 등록번호 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sLastTradeNo"></param>
        /// <param name="sLastRegNo"></param>
        /// <returns></returns>
        string SearchLastTranNo(string sSaleDate, string sPosNo, ref string sLastTradeNo, ref string sLastRegNo);

        /// <summary>
        /// 결락 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTranDiv"></param>
        /// <param name="sLastTradeNo"></param>
        /// <param name="sMissTranNo"></param>
        /// <returns></returns>
        string SearchMissTran(string sSaleDate, string sPosNo, string sTranDiv, string sLastTradeNo, ref string sMissTranNo);

        /// <summary>
        /// 결락 거래번호 재전송 설정
        /// </summary>
        /// <param name="sTranDiv"></param>
        /// <param name="sCmpCD"></param>
        /// <param name="sStorCD"></param>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <returns></returns>
        string SetMissTran(string sTranDiv, string sCmpCD, string sStorCD, string sSaleDate, string sPosNo, string sTradeNo);

        /// <summary>
        /// 영수증 반품 대상 거래 데이터 서버 조회
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sTradeNo"></param>
        /// <param name="SaleTime"></param>
        /// <returns></returns>
        string SearchServerTran(string sSaleDate, string sPosNo, string sTradeNo, string SaleTime);

        /// <summary>
        /// 서버 시간 조회
        /// </summary>
        /// <returns></returns>
        string ServerSysDateTime();

        /// <summary>
        /// 프로그램 업데이트 목록 조회
        /// </summary> 
        /// <param name="sKind"></param>
        /// <param name="sDownDiv"></param>
        /// <param name="aRecvData"></param>
        /// <param name="htRecvData"></param>
        /// <returns></returns>
        string PGMUpdate(string sKind, string sDownDiv, ref string[] aRecvData, ref Hashtable htRecvData);

        /// <summary>
        /// 파일 변경 완료 요청
        /// </summary>
        /// <param name="sKind"></param>
        /// <param name="sAppType"></param>
        /// <param name="sFileName"></param>
        /// <param name="sFileSeq"></param>
        /// <param name="sFileVer"></param>
        /// <param name="sDownDiv"></param>
        /// <param name="sDeployDate"></param>
        /// <param name="sDeployDT"></param>
        /// <returns></returns>
        string PGMUpdate_Complete(string sKind, string sAppType, string sFileName, string sFileSeq, string sFileVer, string sDownDiv, string sDeployDate, string sDeployDT);

        /// <summary>
        /// 프로그램 이력 관리
        /// </summary>
        /// <param name="sKind"></param>
        /// <param name="sFileSeq"></param>
        /// <param name="sFileVer"></param>
        /// <param name="sFileNm"></param>
        /// <param name="sApplyDate"></param>
        /// <param name="sApplyTime"></param>
        /// <param name="sApplyType"></param>
        /// <param name="sDeployDate"></param>
        /// <param name="sDeployTime"></param>
        /// <param name="sFTP_IP"></param>
        /// <param name="sFTP_Port"></param>
        /// <param name="sFTP_ID"></param>
        /// <param name="sFTP_Pwd"></param>
        /// <param name="sFTP_FILEPATH"></param>
        /// <param name="sDOWN_DIV"></param>
        /// <param name="sDeployDT"></param>
        /// <param name="sUseYn"></param>
        /// <returns></returns>
        string PGMUpdate_History_Isert(string sKind, string sFileSeq, string sFileVer, string sFileNm, string sApplyDate, string sApplyTime, string sApplyType, string sDeployDate, string sDeployTime, string sFTP_IP, string sFTP_Port, string sFTP_ID, string sFTP_Pwd, string sFTP_FILEPATH, string sDOWN_DIV, string sDeployDT, string sUseYn);

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start
        /// <summary>
        /// 고객 구매이력 정보
        /// </summary>
        /// <param name="sHppMembNo"></param>
        /// <param name="sGetData"></param>
        /// <returns></returns>       

        //#20180524 구매이력조회 단골여부 전문추가 start,phj
        //기존
        //string ServerBuyHist(string sHppMembNo, ref string sGetData);
        //변경

        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528
        //쿠폰 발송 횟수 제한 기능
        //기존
        //string ServerBuyHist(string sHppMembNo, string sRegularYN, ref string sGetData);
        //변경
        string ServerBuyHist(string sHppMembNo, string sRegularYN, string sCpnSendCnt, ref string sGetData);
        //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528

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


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

        //#20180605 해피오더 개선 start

        //즉시주문, 예약주문 알림
        /// <summary>
        /// 해피오더 당일 픽업 건수 조회
        /// </summary>
        /// <returns></returns>
        int HappyOrderCntChk(string sSaleDate = "");

        //#20180605 해피오더 개선 end

    }
    #endregion 

    #region 마감/중간마감
    /// <summary>
    /// 마감/중간마감
    /// </summary>
    public interface IAccADMT
    {
        /// <summary>
        /// 서비스 실행
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string Execute(string[] aParam);

        ///// <summary>
        ///// 데이터 획득
        ///// </summary>
        ///// <param name="aParam"></param>
        ///// <returns></returns>
        //DataTable GetData(string[] aParam);

        /// <summary>
        /// 저장
        /// </summary>
        /// <param name="aParam"></param>
        /// <param name="oParam"></param>
        /// <returns></returns>
        string SetData(string[] aParam, object oParam, string sSimplePrint);

        /// <summary>
        /// 정산 출력 데이터 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetData_ADMTPrint(string[] aParam);

        /// <summary>
        /// 상품별/분류별 판매 이력 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectiTemClass(string[] aParam);

        /// <summary>
        /// 입금취소
        /// </summary>
        /// <param name="aParam"></param>
        /// <param name="oParam"></param>
        /// <returns></returns>
        string SetRefund(string[] aParam, object oParam);

        /// <summary>
        /// 정산취소
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        string RefundADMTData(string[] aParam);

        /// <summary>
        /// 중간/마감입금 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetData_PayList(string[] aParam);

        /// <summary>
        /// 중간/마감입금 점검지 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetData_PayCheckList(string[] aParam);
        /// <summary>
        /// 중간정산 횟수 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetADMTCount(string[] aParam);

        /// <summary>
        /// 과부족 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetOverAmtSelect(string[] aParam);

        /// <summary>
        /// 업무마감 최종 거래번호 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable GetMax_ADMT_TradeNo(string[] aParam);
    }
    #endregion 

    #region ICalDataIF
    /// <summary>
    /// ICalDataIF
    /// </summary>
    public interface ICalDataIF
    {
        string Execute(string[] aParam);
    }
    #endregion 

    #region 기타 입출금 인터페이스
    /// <summary>
    /// 기타 입출금 인터페이스
    /// </summary>
    public interface IAccEtc
    {
        /// <summary>
        /// 데이터 획득
        /// </summary>
        object GetData(string[] aParam);

        /// <summary>
        /// 데이터 설정
        /// </summary>
        string SetData(object oParam);

        /// <summary>
        /// 기타 입출금 내역 출력
        /// </summary>
        string AccEtcListPrt(object oParam, string sFromDate, string sToDate);
    }
    #endregion 

    #region 준비금 인터페이스
    /// <summary>
    /// 준비금 인터페이스
    /// </summary>
    public interface IAccRemoney
    {
        /// <summary>
        /// 데이터 획득
        /// </summary>
        object GetData(string[] aParam);

        /// <summary>
        /// 데이터 설정
        /// </summary>
        string SetData(object oParam);

        /// <summary>
        /// 기타 입출금 내역 출력
        /// </summary>
        string AccRemoneyListPrt(object oParam, string sFromDate);
    }
    #endregion 

    #region 자료 조회
    /// <summary>
    /// 자료 조회
    /// </summary>
    public interface IDataSearch
    {

        /// <summary>
        /// 조회 대상 그룹 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectGroupList(string[] aParam);

        /// <summary>
        /// Host 조회 실행
        /// </summary>
        /// <param name="sIRTType"></param>
        /// <param name="sPosNo"></param>
        /// <param name="sStartDate"></param>
        /// <param name="sEndDate"></param>
        /// <param name="sChasu"></param>
        /// <param name="siTemGroup"></param>
        /// <param name="aRet"></param>
        /// <returns></returns>
        string ExecuteHostIrt(string sIRTType, string sPosNo, string sStartDate, string sEndDate, string sChasu, string siTemGroup, ref string[] aRet);

        /// <summary>
        /// 영수증 프린터 출력
        /// </summary>
        /// <param name="alPrintData"></param>
        /// <returns></returns>
        bool PosDataPrint(ArrayList alPrintData);

        /// <summary>
        /// POS번호 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectPosNo(string[] aParam);

        /// <summary>
        /// 조회일 판매이력이 있는 담당자 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectTranCashier(string[] aParam);

        /// <summary>
        /// 담당자별 상품 판매 이력 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectCashier_iTem(string[] aParam);

        /// <summary>
        /// 점검지 생성
        /// </summary>
        /// <param name="sSaleDate"></param>
        /// <returns></returns>
        string MakeAccADMTCheck(string sSaleDate, ref DataTable dtReturn, string sSimplePrint);

        ///// <summary>
        ///// 정산 점검지 조회
        ///// </summary>
        ///// <param name="aParam"></param>
        ///// <returns></returns>
        //DataTable SelectAccADMTCheck(string[] aParam);

        /// <summary>
        /// 영업공지사항 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectBusiNotice(string[] aParam);

        // Rhee, 2017.10.18 00077점포 매출 Text파일 다운로드 기능(매30분) Start
        /// <summary>
        /// 00077점포 매출 Text파일 다운로드
        /// </summary>
        DataTable SelectPayAmtFilePut(string sStoreCd, string sDate);
        // Rhee, 2017.10.18 00077점포 매출 Text파일 다운로드 기능(매30분) End
    }
    #endregion 

    #region 무결성 관리
    /// <summary>
    /// 무결성 관리
    /// </summary>
    public interface IIntegrity
    {
        /// <summary>
        /// 무결성 로그 조회
        /// </summary>
        /// <param name="aParam"></param>
        /// <returns></returns>
        DataTable SelectIntegrityLog(string[] aParam);
    }
    #endregion 

    #region 주변장치 업데이트
    /// <summary>
    /// 주변장치 업데이트
    /// </summary>
    public interface IDeviceUpdate
    {
        /// <summary>
        /// 서명패드 업데이트 파일 다운로드 FTP 정보 조회
        /// </summary>
        /// <returns></returns>
        string FtpInfoIRT(string sTargetFileNm, string sTargetLocalDate, ref Hashtable m_hFTPRecvData);

        /// <summary>
        /// 서명패드 업데이트 건수
        /// POS의 법인별_서명패드 모델에 대한 건수만 체크한다.
        /// </summary>
        /// <returns></returns>
        int SignPadUpdateCnt(ref string sImgFileNm, ref string sAviFileNm, ref string sFirmFileNm);

        /// <summary>
        /// 서명패드 모델 체크 및 INI 파일 변경
        /// </summary>
        /// <returns></returns>
        string SignPadModelCheck();

        /// <summary>
        /// 서명패드 업데이트 상세 파일 명
        /// </summary>
        /// <returns></returns>
        string SignPadUpdateFilesNm();

        /// <summary>
        /// 서명패드 업데이트 압축파일
        /// </summary>
        /// <param name="sZipFiles"></param>
        /// <returns></returns>
        string SignPadModelFileGrp(ref string sZipFiles);

        /// <summary>
        /// 서명패드 업데이트 서버 확인
        /// </summary>
        /// <param name="dtFtpDataTable"></param>
        /// <returns></returns>
        string SignPadUpdateServerCheck(ref DataTable dtFtpDataTable);
    }
    //#20171016 IC리더기 펌웨어 업데이트 Start, srlee
    /// <summary>
    /// IC리더기 업데이트_NEW
    /// </summary>
    public interface IICReaderUpdate
    {
        /// <summary>
        /// IC리더기 펌웨어 업데이트 건수
        /// </summary>
        /// <param name="sFilePath"></param>
        /// <param name="sFirmFileNm"></param>
        /// <returns></returns>
        int ICReaderUpdateCnt(string sFilePath, ref string sFirmFileNm);

        /// <summary>
        /// IC리더기 모델 체크
        /// </summary>
        /// <returns></returns>
        bool ICReaderModelCheck();

        /// <summary>
        /// IC리더기 펌웨어 업데이트 건수
        /// </summary>
        /// <param name="nErrCode"></param>
        /// <returns></returns>
        string ICReaderResultCode(int nErrCode);
    }
    //#20171016 IC리더기 펌웨어 업데이트 End, srlee
    #endregion 

    #region 점포점검 확인
    /// <summary>
    /// 점포점검 확인
    /// </summary>
    public interface IStoreCheck
    {
        /// <summary>
        /// 점포점검 스케줄 확인
        /// </summary>
        /// <returns></returns>
        DataTable StoreCheckSchedule(string sPosStatus, string sType);

        /// <summary>
        /// 체크항목
        /// </summary>
        /// <param name="sINSPCT_ENTRY"></param>
        /// <returns></returns>
        DataTable StoreNoticeDTL(string sInspctEntryGrpCd);

        /// <summary>
        /// 점포점검 저장
        /// </summary>
        /// <param name="sInsertUpdate">저장/업데이트 구분</param>
        /// <param name="dtData1">점검 항목 점포</param>
        /// <param name="dtData2">점검 항목 상세</param>
        /// <returns></returns>
        string StoreCheckSave(string sInsertUpdate, DataTable dtData1, DataTable dtData2);

        /// <summary>
        /// 점포점검 등록 여부 IRT
        /// </summary>
        /// <returns></returns>
        string StoreCheckSaveIrt(string InspctEntryGrpCd, string sCheckDate);

        /// <summary>
        /// 점포점검 등록 여부 Local
        /// </summary>
        /// <param name="sSaleDate">영업일자</param>
        /// <param name="sStoreCheckCd">점검 항목 그룹 코드</param>
        /// <returns></returns>
        bool StoreSaveCheckLoacl(string sSaleDate, string sStoreCheckCd);
    }
    #endregion

    #region 해피버즈
    /// <summary>
    /// 해피버즈
    /// </summary>
    public interface IHappyBuzz
    {
        /// <summary>
        /// 해피버즈 등록
        /// </summary>
        /// <param name="aParam"></param>
        /// <param name="aOutParam"></param>
        /// <returns></returns>
        int SetHappyBuzz(string[] aParam, ref string[] aOutParam);

        /// <summary>
        /// 해피버즈 취소
        /// </summary>
        /// <param name="aParam"></param>
        /// <param name="aOutParam"></param>
        /// <returns></returns>
        int CanHappyBuzz(string[] aParam, ref string[] aOutParam);
    }
    #endregion 

    #region 점포장비점검 확인
    /// <summary>
    /// 점포장비점검 확인
    /// </summary>
    public interface IStoreEquipCheck
    {
        /// <summary>
        /// 일일점검리스트 일자별 상태 조회
        /// </summary>
        /// <returns></returns>
        string SearchStoreEquipCheckList(string sSearchFlag, string sDateFrom, string sDateTo);

        /// <summary>
        /// 일일점검리스트 점포 점검 항목
        /// </summary>
        /// <returns></returns>
        DataTable SearchStoreEquipCheckInfo();

        /// <summary>
        /// 점포점검 저장 (Insert/Update)
        /// </summary>
        /// <param name="sInsertUpdate">저장/업데이트 구분</param>
        /// <param name="dtData1">점검 항목 점포</param>
        /// <param name="dtData2">점검 항목 상세</param>
        /// <returns></returns>
        string StoreCheckSave(DataTable dtData1, DataTable dtData2);
    }
    #endregion 

    #region OCB 직통신
    /// <summary>
    /// OCB 직통신
    /// </summary>
    public interface IOCBDirect
    {
        /// <summary>
        /// OCB 직통신 
        /// </summary>
        /// <param name="sTradeDiv"></param>
        /// <param name="sPayWayCD"></param>
        /// <param name="sPayWayDtlCD"></param>
        /// <param name="sTranType"></param>
        /// <param name="sCardNo"></param>
        /// <param name="sCardPwd"></param>
        /// <param name="sPayAmt"></param>
        /// <param name="sApprDt"></param>
        /// <param name="sApprNo"></param>
        /// <param name="sUniqueID"></param>
        /// <param name="sResMsg"></param>
        /// <param name="aIrtRspDTL"></param>
        /// <returns></returns>
        string OCB_Direct_Point(string sTradeDiv, string sPayWayCD, string sPayWayDtlCD, string sTranType, string sCardNo, string sCardPwd, string sPayAmt, string sApprDt, string sApprNo, string sUniqueID, ref string sResMsg, ref string[] aIrtRspDTL);
    }
    #endregion 

    // #20170616, 해피앱 스탬프 Start
    #region 해피앱 스탬프
    /// <summary>
    /// 해피앱 스탬프
    /// </summary>
    public interface IHappyAppStamp
    {
        /// <summary>
        /// 해피앱 스탬프 등록/취소
        /// </summary>
        /// <returns></returns>
        void SetHappyAppStamp();

        /// <summary>
        /// 해피앱 스탬프 가능 여부 확인
        /// </summary>
        /// <returns></returns>
        string CheckHappyAppStamp();
    }
    #endregion
    // #20170616, 해피앱 스탬프 End

    //#20171227 인천공항 포스연동 start, phj
    #region 인천공항공사
    /// <summary>
    /// 인천공항 포스연동 인터페이스 
    /// </summary>
    public interface IAirPortTran
    {
        /// <summary>
        /// ** 결제마감
        /// </summary>
        string IncheonAireportClose(string sMenuKey, string sCloseGb);
        /// <summary>
        /// ** 반품하기
        /// </summary>
        int i_return_Data(string pSaleDate, string pOld_bill, string pNew_BillNo, string pSaleTY, string pResultTY);
        /// <summary>
        /// 인천공항 폼에서 요청
        /// </summary>
        string PayRequestClick();
        /// <summary>
        /// 인천공항 폼에서 조회
        /// </summary>
        string PaySearchClick();
        /// <summary>
        /// 인천공항 폼에서 닫기
        /// </summary>
        string CloseClick();


        //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 start,phj
        //대기번호 입력화면에서 인천공항 상태체크
        string IncheonAirportCheck();
        //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 end,phj
    }
    #endregion
    //#20171227 인천공항 포스연동 end, phj

    //#20180406 로컬, 서버에 저널데이터 없는 경우 재생성 start
    #region 저널데이터 재생성
    /// <summary>
    /// 저널데이터 재생성
    /// </summary>
    public interface IPosReceipt
    {
        /// <summary>
        /// 판매 영수증 데이터 생성
        /// </summary>
        /// <returns></returns>
        string MakePosSaleReceipt(string[] aParam);

        /// <summary>
        /// 저널데이타 저장
        /// </summary>
        /// <returns></returns>
        string SaveJnlExecute(string[] aParam);
    }
    #endregion
    //#20180406 로컬, 서버에 저널데이터 없는 경우 재생성 end

    //#20180413 웰컴카드 신규기능 추가 start,phj
    #region 웰컴카드 발급/할인 함수 모음
    /// <summary>
    /// 웰컴카드 발급/할인 함수 모음  
    /// </summary>
    public interface IWelcomeCard
    {
        /// <summary>
        /// 해피앱 고객등록 체크
        /// </summary>
        bool ClientRegisterCheck(string sType, string[] sParam, ref string sHP_CustNumer, ref string sHP_WelcomeCard);

        /// <summary>
        /// 프리픽스 체크 
        /// </summary>
        string WelcomeCard_PrefixCheck(string pCardNo);

        /// <summary>
        /// 웰컴카드 할인
        /// </summary>
        string SetWccDCPayment(string[] sParam, ref string[] sRevParam);

        /// <summary>
        /// 웰컴카드 전송조립
        /// </summary>
        string WelcomeCard_SendDataMake(string sTradeDiv, string[] sParam, ref string[] sRevParam);
    }
    #endregion
    //#20180413 웰컴카드 신규기능 추가 end,phj



    public interface IPaymentBase
    {

    }
}
