using System.IO; using System.Net; using System.Data; using System.Net.NetworkInformation; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 기본 마스터 로딩 처리 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Service { class LoadMasterInfo : IServiceUs { private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus; // 기본정보 참조 private TranStatus m_cTrnStatus; // 거래정보 참조 private DeviceStatus m_cDevStatus; // 장치정보 참조 private IDataProcessUs m_cDataSrv = null; // 거래데이터 합계금액 계산 및 관리 private IDataCommonUs m_cDataCommSrv = null; // 거래 공통 함수 관리 private IServiceUs m_cSaveCfgSrv = null; // 설정파일 저장 private IServiceUs m_cReadCfgSrv = null; // 설정파일 읽기 private IMasterUs m_cMstService = null; // 마스터 인터페이스 private IICReaderUs m_cIcReader = null; // IC Reader 관리 private ISignPadUs m_cSignPad = null; // Signpad 관리 public LoadMasterInfo() { m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보 m_cDataSrv = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cDataCommSrv = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cSaveCfgSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.SAVE_CONFIGINFO); m_cReadCfgSrv = (IServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.READ_CONFIGINFO); m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER); m_cIcReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER); m_cSignPad = (ISignPadUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_SIGNPAD); } /// /// 프로그램 시작(환경파일로딩, 기본마스터 로딩, 서비스 시작) /// /// /// public string Execute(string[] aParam) { string sRet = UserCom.RST_ERR; try { if (aParam.Length == 0) { // POS 메시지 마스터 로딩 LoadMessageMaster(); // 점포마스터 로딩 LoadStoreMaster(); // 스크린 마스터 로딩 LoadScreenMaster(); // POS마스터 로딩 LoadPosMaster(); //// 외식후불 주문(서브)포스 일때 메인포스 데이터베이스 IP 설정 //SetMainPosInfo(); // 문화마스터 로딩 LoadCultureMaster(); // POS 옵션 마스터 로딩 LoadOptionMaster(); // 할인 결제 마스터 로딩 LoadPayDcMaster(); // 담당자 권한 마스터 로딩 LoadPicAuthMaster(); // 최종거래번호 설정 LoadLastTradeNo(); // 현금 알람 금액 LoadCashAlarm(); // 외부 I/F 정보 조회 LoadJoinStorInfo(); //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510 //적용시 주석 해제 LoadSendCpnMstInfo(); //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510 } else if (aParam.Length > 0 && aParam[0] == "BASIC_MST_LOAD") { // POS 메시지 마스터 로딩 LoadMessageMaster(); // 점포마스터 로딩 LoadStoreMaster(); // POS마스터 로딩 LoadPosMaster(); // POS 옵션 마스터 로딩 LoadOptionMaster(); } else if (aParam.Length > 0 && aParam[0] == "CHANGE_MAINPOS_DB") { // 외식후불 주문(서브)포스 일때 메인포스 데이터베이스 IP 설정 SetMainPosInfo(); } else { // POS 메시지 마스터 로딩 LoadMessageMaster(); } // IC 리더기 초기화 m_cIcReader.InitializeDevice(); // PosDevice.INI --> SpcnPosCfg.ini m_cSignPad.UpdateIniConfig(); sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 점포 마스터 로딩 /// /// public string LoadStoreMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // 점포 마스터 로딩 sQuery = "SELECT * FROM POSMST..MST_STOR WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += "AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { PosMstManager.SetMstStore(dtDataInfo.Rows[0]); // 점포마스터 설정 DataRow dr = dtDataInfo.Rows[0]; m_cPosStatus.Mst.StorOwnName = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.STOR_OWN_NM); m_cPosStatus.Mst.StorName = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.STORNM); m_cPosStatus.Mst.StorAddr = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.STOR_ADDR); m_cPosStatus.Mst.StorBizPsnNo = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BIZ_PSN_NO); m_cPosStatus.Mst.StorTelNo = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TELNO); m_cPosStatus.Mst.VatRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.VAT_RUD_DW_LOC); m_cPosStatus.Mst.VatRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.VAT_RUD_DW_METHD); m_cPosStatus.Mst.DcRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_LOC); m_cPosStatus.Mst.DcRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_METHD); m_cPosStatus.Mst.ItemRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ITEM_RUD_DW_LOC); m_cPosStatus.Mst.ItemRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_METHD); m_cPosStatus.Mst.SeriveFreeDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.SVC_FEE_DIV); m_cPosStatus.Mst.SeriveFreeApplyDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.SVC_FEE_APPLYTRGT_DIV); m_cPosStatus.Mst.SeriveFreeTaxAmtDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.SVC_FEE_TAX_AMT_APPLYDIV); m_cPosStatus.Mst.DrtFrcsDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DRT_FRCS_DIV); m_cPosStatus.Mst.TaxAmtApplydiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TAX_AMT_APPLY_DIV); m_cPosStatus.Mst.TaxAmtIncludeYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TAX_AMT_INCLUDE_YN); m_cPosStatus.Mst.TaxAmtCalcMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TAX_AMT_CALC_METHD); m_cPosStatus.Mst.BasicTakeInTaxCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BASIC_TAKE_IN_TAX_CD); m_cPosStatus.Mst.BasicTakeOutTaxCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BASIC_TAKE_OUT_TAX_CD); // 마스터의 브랜드코드와 문화코드 필드가 null 이면 ini 값으로 정의(2017/03/23) //m_cPosStatus.Mst.MltCultCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.MLT_CULT_CD); m_cPosStatus.Mst.MltCultCd = CmUtil.IsNull(CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.MLT_CULT_CD), m_cPosStatus.Base.CultureID); m_cPosStatus.Mst.HpyOrdAgreeYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.HPYORD_AGREEYN); m_cPosStatus.Mst.GiftSaleYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.GIF_SALE_YN); m_cPosStatus.Mst.BillMsgDupPrmtYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BILL_MSG_DUP_PRMT_YN); m_cPosStatus.Mst.BillMsgDupPrtRank = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BILL_MSG_PRT_RANK); m_cPosStatus.Mst.ReservSaleYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.RESERV_SALE_YN); m_cPosStatus.Mst.ComplexShopType = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.COMPLEX_SHOP_TYPE); m_cPosStatus.Mst.TestStorYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.TEST_STOR_YN); m_cPosStatus.Mst.ETC_IF_DIV = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_DIV); m_cPosStatus.Mst.ETC_IF_FTP_IP = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_IP); m_cPosStatus.Mst.ETC_IF_FTP_PORT = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PORT); m_cPosStatus.Mst.ETC_IF_FTP_ID = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_ID); m_cPosStatus.Mst.ETC_IF_FTP_PW = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PW); m_cPosStatus.Mst.ETC_IF_FTP_PASSIVE = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PASSIVE); m_cPosStatus.Mst.ETC_IF_FTP_PATH = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_FTP_PATH); m_cPosStatus.Mst.ETC_IF_URL1 = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_URL1); m_cPosStatus.Mst.ETC_IF_URL2 = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_URL2); m_cPosStatus.Mst.ETC_IF_POS_DIV = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.ETC_IF_POS_DIV); m_cPosStatus.Mst.CdpUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CDP_USE_YN); m_cPosStatus.Mst.CdpMessage = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CDP_MSG); m_cPosStatus.Mst.LoanLawCertfYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.LOAN_LAW_CERTF_YN); m_cPosStatus.Mst.PayRudDwLocMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_METHD); //m_cPosStatus.Mst.PayRudDwLoc = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_LOC); m_cPosStatus.Mst.PayRudDwLoc = "2";//CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.DC_RUD_DW_LOC); // 브랜드코드를 INI로 관리(2016/10/28) // 마스터의 브랜드코드와 문화코드 필드가 null 이면 ini 값으로 정의(2017/03/23) //m_cPosStatus.Base.BrandCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BRAND_CD); m_cPosStatus.Base.BrandCd = CmUtil.IsNull(CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BRAND_CD), m_cPosStatus.Base.BrandCd); m_cPosStatus.Base.CultureID = m_cPosStatus.Mst.MltCultCd; //// 도로공사, 공항공사 관리코드를 DB로 관리(2017/01/11) //m_cPosStatus.Base.OutSDVendConNo = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.OUT_SD_VEND_CON_NO); //m_cPosStatus.Base.OutSDVendCrnrCd = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.OUT_SD_VEND_CRNR_CD); // 해피버즈 사용 여부 m_cPosStatus.Mst.HappyBuzzUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.HAPPY_BUZZ_USE_YN); // 브라우저 키 m_cPosStatus.Mst.BrowserKey = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.BROWSER_KEY); if (m_cPosStatus.Mst.BrowserKey == "") m_cPosStatus.Mst.BrowserKey = "SPCPos"; // 회사 구분 m_cPosStatus.Mst.CorpDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CORP_DIV).Trim().ToUpper(); // 국가 구분 m_cPosStatus.Mst.CntryDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.CNTRY_DIV).Trim().ToUpper(); // 해피포인트 적립율 m_cPosStatus.Mst.HpyPntAccumRate = CmUtil.GetDataRowDouble(dr, PosMst.MST_STORE.DATA.HPY_PNT_ACCUMRATE); //#15274 영수증 문구 추가 요청 start m_cPosStatus.Mst.CompNm = CmUtil.GetDataRowStr(dr, PosMst.MST_STORE.DATA.COMP_NM); //#15274 영수증 문구 추가 요청 end // INI 파일 설정(마스터 데이터를 INI에 저장) CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); m_PosConfig.GetMessage("POS").MakeMessageOverWrite("BrandCd", m_cPosStatus.Base.BrandCd); // 원격제어 관리를 위한 필드 추가(20170303-CHOCY) m_PosConfig.GetMessage("STORE").MakeMessageOverWrite("Name", m_cPosStatus.Mst.StorName); m_PosConfig.GetMessage("STORE").MakeMessageOverWrite("Address", m_cPosStatus.Mst.StorAddr); m_PosConfig.GetMessage("STORE").MakeMessageOverWrite("Tel", m_cPosStatus.Mst.StorTelNo); m_PosConfig.GetMessage("GLOBAL").MakeMessageOverWrite("CultureID", m_cPosStatus.Base.CultureID); m_PosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "PayRudDwLoc =>" +m_cPosStatus.Mst.PayRudDwLoc); } else { PosMstManager.SetMstStore(null); } sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 스크린 마스터 로딩 /// /// public string LoadScreenMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // 스크린 마스터 로딩 sQuery = "SELECT * FROM POSMST..MST_ITEM_KEY_COMPNT WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { foreach (DataRow dr in dtDataInfo.Rows) { if (m_cPosStatus.Base.StoreNo == CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.SUB_STOR_CD)) { PosMstManager.SetMstScreen(dr); // 스크린 마스터 설정 m_cPosStatus.ScnMst.PosScrnType = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.POS_SCRN_TYPE); m_cPosStatus.ScnMst.FuncScrollUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.FUNC_SCROLL_USE_YN); m_cPosStatus.ScnMst.ThemeColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.THEME_COLOR); m_cPosStatus.ScnMst.LoginImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.LOGIN_IMG); m_cPosStatus.ScnMst.BrandCiImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.BRAND_CI_IMG); m_cPosStatus.ScnMst.MainImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.MAIN_IMG); m_cPosStatus.ScnMst.WaitImg = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.WAIT_IMG); m_cPosStatus.ScnMst.BookmkUseYn = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_USE_YN); m_cPosStatus.ScnMst.BookmkItemKeyArray = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.BOOKMK_ITEM_KEY_ARRAY); m_cPosStatus.ScnMst.HqItemKeyLayout = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.HQ_ITEMKEY_LAYOUT); m_cPosStatus.ScnMst.ShopItemkeyLayout = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.SHOP_ITEMKEY_LAYOUT); m_cPosStatus.ScnMst.LClssKeyBasicColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_COLOR); m_cPosStatus.ScnMst.LClssKeyBasicFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_BASIC_FONT_COLOR); m_cPosStatus.ScnMst.LClssKeySelColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_COLOR); m_cPosStatus.ScnMst.LClssKeySelFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.L_CLSS_KEY_SEL_FONT_COLOR); m_cPosStatus.ScnMst.ItemKeyBasicColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_COLOR); m_cPosStatus.ScnMst.ItemKeyBasicFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_BASIC_FONT_COLOR); m_cPosStatus.ScnMst.ItemKeySelColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_COLOR); m_cPosStatus.ScnMst.ItemKeySelFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR); m_cPosStatus.ScnMst.ItemKeySelFontColor = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.ITEM_KEY_SEL_FONT_COLOR); m_cPosStatus.ScnMst.FixItemClssCnt = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_KEY_COMPNT.DATA.FIX_ITEM_CLSS_CNT); m_cPosStatus.Base.DesignType = m_cPosStatus.ScnMst.PosScrnType; m_cPosStatus.Base.ThemeType = m_cPosStatus.ScnMst.ThemeColor; break; } } } else { PosMstManager.SetMstScreen(null); } sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// POS 마스터 로딩 /// /// public string LoadPosMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // POS 마스터 로딩 //sQuery = "SELECT * FROM POSMST..MST_POS WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'"; //sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; // 2017.02.03, 복합매장 서브매장코드 반영 var fmt = "SELECT A.*, B.COMPLEX_SHOP_STOR_NM AS SUB_STOR_NM \n" + " FROM MST_POS A LEFT JOIN MST_COMPLEX_SHOP_STOR B \n" + " ON A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.SUB_STOR_CD = B.COMPLEX_SHOP_STOR_CD \n" + " AND A.USE_YN = '{3}' AND (B.USE_YN = '{3}' OR B.USE_YN IS NULL) \n" + " WHERE A.CMP_CD = '{0}' AND A.STOR_CD = '{1}' AND A.POS_NO = '{2}' "; sQuery = string.Format(fmt, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.StoreNo, m_cPosStatus.Base.PosNo, PosConst.MST_USE_YN.YES); DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { PosMstManager.SetMstPos(dtDataInfo.Rows[0]); // POS 마스터 설정 DataRow dr = dtDataInfo.Rows[0]; // POS 구분 설정(0:선불, 1:후불) m_cPosStatus.Base.PosType = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.POS_TYPE); // 메인POS 구분 설정(0:서브POS, 1:메인POS) m_cPosStatus.Base.PosCommunicationType = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.MAIN_YN); if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.PRE_PAYMENT) m_cPosStatus.Base.PosCommunicationType = PosConst.MAIN_POS_DIV.MAIN_POS; // 여전법 인증 버전 //m_cPosStatus.Base.Auth_POS_SW_Ver = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.CERTF_VER); // DB관리에서 하드코딩으로 변경 - 문성진대리 요청 2016.11.08 // 차후 POS 인증버전이 여러개일 경우 해당 부분 수정하시면 됩니다. //m_cPosStatus.Base.Auth_POS_SW_Ver = "#####SPCPOS11101"; //m_cPosStatus.Base.Auth_POS_SW_Ver = "###SPCPCPOS11101"; m_cPosStatus.Base.Auth_POS_SW_Ver = "###SPCCLHS011101"; // 2017.02.03, 메인포스번호 초기화 // m_cPosStatus.Base.MainPosNo = string.Empty; // 2017.02.03, 서브매장정보 m_cPosStatus.Base.SubShopNo = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.SUB_STOR_CD).Trim(); m_cPosStatus.Base.SubShopNm = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.SUB_STOR_NM).Trim(); // INI 파일 설정(마스터 데이터를 INI에 저장) // 마스터에서 가져 오기 때문에 INI 저장 안 함(2017.03.24) //CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); //m_PosConfig.GetMessage("POS").MakeMessageOverWrite("PosType", m_cPosStatus.Base.PosType); //m_PosConfig.GetMessage("POS").MakeMessageOverWrite("PosCommunicationType", m_cPosStatus.Base.PosCommunicationType); //m_PosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); } else { PosMstManager.SetMstPos(null); } sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 외식후불 주문(서브)포스 일때 메인포스 데이터베이스 IP 설정 /// /// private bool SetMainPosInfo() { try { if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT) return true; // 복합매장이고 후불일때는 복합매장구성점포(서브매장코드)가 필수이다. if (m_cPosStatus.Mst.ComplexShopType == "2") { if (string.IsNullOrWhiteSpace(m_cPosStatus.Base.SubShopNo) || string.IsNullOrWhiteSpace(m_cPosStatus.Base.SubShopNm)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0632); return true; } } // 메인포스번호 초기화 m_cPosStatus.Base.MainPosNo = m_cPosStatus.Base.PosNo; if (m_cPosStatus.Base.PosCommunicationType != PosConst.MAIN_POS_DIV.SUB_POS) return true; var fmt = string.Empty; var sql = string.Empty; if (m_cPosStatus.Mst.ComplexShopType == "2") { // 복합매장 //#20171026 복합매장 메인포스가 아닌 주문포스인 경우 자기POS번호에 설정된 IP로 메인포스 IP 설정 start //기존 /* fmt = "SELECT TOP 1 * FROM POSMST..MST_POS WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_TYPE = '{2}' AND MAIN_YN = '{3}' AND USE_YN = '{4}' AND SUB_STOR_CD = '{5}' ORDER BY POS_NO "; sql = string.Format(fmt, m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , PosConst.POS_TYPE.DEFERRED_PAYMENT , PosConst.MAIN_POS_DIV.MAIN_POS , PosConst.MST_USE_YN.YES , m_cPosStatus.Base.SubShopNo ); */ //변경 fmt = "SELECT B.POS_NO, A.POS_IP \n" + " FROM POSMST..MST_POS A LEFT OUTER JOIN POSMST..MST_POS B ON A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD AND A.POS_IP = B.POS_IP \n" + " WHERE A.CMP_CD = '{0}' AND A.STOR_CD = '{1}' AND A.POS_TYPE = '{2}' AND A.USE_YN = '{3}' AND A.POS_NO = '{4}' \n" + " AND B.MAIN_YN = '1' \n" + " AND B.USE_YN = '1'"; sql = string.Format(fmt, m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , PosConst.POS_TYPE.DEFERRED_PAYMENT , PosConst.MST_USE_YN.YES , m_cPosStatus.Base.PosNo ); //#20171026 복합매장 메인포스가 아닌 주문포스인 경우 자기POS번호에 설정된 IP로 메인포스 IP 설정 end } else { // 단독매장 fmt = "SELECT TOP 1 * FROM POSMST..MST_POS WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_TYPE = '{2}' AND MAIN_YN = '{3}' AND USE_YN = '{4}' ORDER BY POS_NO "; sql = string.Format(fmt, m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , PosConst.POS_TYPE.DEFERRED_PAYMENT , PosConst.MAIN_POS_DIV.MAIN_POS , PosConst.MST_USE_YN.YES ); } DataTable dtData = m_cMstService.Select(new string[] { sql }); if (dtData == null || dtData.Rows.Count == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0379); return false; } var dr = dtData.Rows[0]; var mainIP = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.POS_IP).Trim(); if (string.IsNullOrWhiteSpace(mainIP)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0379); return false; } // 메인포스 데이터베이스 IP 설정 var tmpDbSource = m_cPosStatus.Base.LocalDbSource; var arg = mainIP.Split('\\'); if (arg.Length > 1) { m_cPosStatus.Base.LocalDbSource = mainIP.Trim(); } else { m_cPosStatus.Base.LocalDbSource = mainIP.Trim() + @"\SPCPOS"; } // 후불 메인POS 번호 m_cPosStatus.Base.MainPosNo = CmUtil.GetDataRowStr(dr, PosMst.MST_POS.DATA.POS_NO).Trim(); // 변경로그 var log = string.Empty; if (tmpDbSource != m_cPosStatus.Base.LocalDbSource) { log = string.Format("Change Database Connection Infomatoin [LocalDatabase:{0}] => [MainPos Database:{1}]" , tmpDbSource, m_cPosStatus.Base.LocalDbSource); } else { log = string.Format("Database Connection Infomatoin [LocalDatabase:{0}]]", m_cPosStatus.Base.LocalDbSource); } UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", log); // Del, 2017.03.17, 변경된 메인POS DB 정보 저장 안함. // INI 파일 설정(마스터 데이터를 INI에 저장) //CmMessage m_PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); //m_PosConfig.GetMessage("DATABASE").MakeMessageOverWrite("LocalSource", m_cPosStatus.Base.LocalDbSource); //m_PosConfig.MakeFileFromMessage(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } } /// /// 메시지 마스터 로딩 /// /// public string LoadMessageMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // POS 메시지 마스터 로딩 sQuery = "SELECT * FROM POSMST..MST_MSG WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND LANG_CD = '" + m_cPosStatus.Base.Country + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dtMessageData = m_cMstService.Select(new string[] { sQuery }); MessageManager.Clear(); if (dtMessageData != null && dtMessageData.Rows.Count > 0) { //POS 메시지 마스터 --> 메시지매니저 저장 foreach (DataRow dr in dtMessageData.Rows) { MessageManager.SetMessage( CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG_TYPE), CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG_NO), CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG1), CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG2), CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG3), CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG4), CmUtil.GetDataRowStr(dr, PosMst.MST_MSG.DATA.MSG5)); } sRet = UserCom.RST_OK; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 옵션 마스터 로딩 /// /// public string LoadOptionMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // POS 옵션 마스터 로딩 sQuery = "SELECT * FROM POSMST..MST_POS_OPTN WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND (POS_NO = '00' OR POS_NO = '" + m_cPosStatus.Base.PosNo + "')"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY POS_NO ASC "; DataTable dtOptionData = m_cMstService.Select(new string[] { sQuery }); PosMstManager.OptionClear(); if (dtOptionData != null && dtOptionData.Rows.Count > 0) { //POS 옵션 마스터 foreach (DataRow dr in dtOptionData.Rows) { PosMstManager.SetPosOption( CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_CD), CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_VAL), CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_NM), CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_EXPLN)); } //sRet = UserCom.RST_OK; } // 2017.02.03, 후불 주문POS의 특정옵션(주방출력관련)은 메인포스 옵션 우선 // 2017.03.16, 익일개점여부 는 메인포스 옵션 우선 if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.SUB_POS) { // 메인옵션 대상 // OPT425 주방프린터 자동출력 사용여부 0:자동 1:수동(프린터선택) 2:수동(상품선택) // OPT506 주방프린터 사용 0 : 사용 안 함/ 1 : 사용 함 // OPT302 익일개점허용여부 0: 미사용, 1:사용 sQuery = "SELECT * FROM POSMST..MST_POS_OPTN \n" + " WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_NO = '{2}' AND USE_YN = '{3}' \n" + " AND OPTN_CD IN ('OPT506','OPT425', 'OPT302') "; sQuery = string.Format(sQuery, m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , m_cPosStatus.Base.MainPosNo , PosConst.MST_USE_YN.YES ); dtOptionData = m_cMstService.Select(new string[] { sQuery }); if (dtOptionData != null && dtOptionData.Rows.Count > 0) { //POS 옵션 마스터 foreach (DataRow dr in dtOptionData.Rows) { PosMstManager.SetPosOption( CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_CD), CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_VAL), CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_NM), CmUtil.GetDataRowStr(dr, PosMst.MST_POS_OPTN.DATA.OPTN_EXPLN)); } } } sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 문화 마스터 로딩 /// /// public string LoadCultureMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // 문화 마스터 로딩 sQuery = "SELECT * FROM POSMST..MST_CULTURE WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND CULTURE_CD = '" + m_cPosStatus.Base.CultureID + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { DataRow dr = dtDataInfo.Rows[0]; // 문화마스터 설정 m_cPosStatus.Global.m_stCultureMaster.strCultureName = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.CULTURE_NM); m_cPosStatus.Global.m_stCultureMaster.strDatePattern = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.DT_PATTERN); m_cPosStatus.Global.m_stCultureMaster.strCurrencySymbol = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.CURR_SYMBL); m_cPosStatus.Global.m_stCultureMaster.strCurrencyName = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.CURR_NM); m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits = CmUtil.GetDataRowInt(dr, PosMst.MST_CULTURE.DATA.DEC_PNT_DIGITS); m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.DEC_PNT_SYMBL); m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits = CmUtil.GetDataRowInt(dr, PosMst.MST_CULTURE.DATA.GRP_DIGITS); m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.GRP_SYMBL); if ( m_cPosStatus.Base.Country != CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.LANG_TYPE)) { m_cPosStatus.Base.Country = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.LANG_TYPE); LoadMessageMaster(); } else { m_cPosStatus.Base.Country = CmUtil.GetDataRowStr(dr, PosMst.MST_CULTURE.DATA.LANG_TYPE); } if (System.Threading.Thread.CurrentThread.CurrentCulture.Name == "fr-FR") { // 프랑스 문화권 이면 내부처리 문화는 영어 문화권으로 변경 System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); } } sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 결제 할인 마스터 로딩 /// /// public string LoadPayDcMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // 결제 할인 마스터 로딩 { sQuery = "SELECT * FROM POSMST..MST_PAY_DC WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY SALE_POS_PRT_QUE, PAY_DC_GRP_TYPE, PAY_DC_CD "; // 영수증 출력시 중요. DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { PosMstManager.SetMstPayDc(dtDataInfo); } } // VAN 마스터 로딩 { sQuery = "SELECT * FROM POSMST..MST_VAN WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { // VAN마스터의 터미널ID 하드코딩 (2017.05.23) if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) { // 부산역사점(0013096), 08,09번 POS if (m_cPosStatus.Base.StoreNo == "0013096" && (m_cPosStatus.Base.PosNo == "08" || m_cPosStatus.Base.PosNo == "09")) { foreach(DataRow dr in dtDataInfo.Rows) { if (CmUtil.GetDataRowStr(dr, PosMst.MST_VAN.DATA.APPR_ID) == "PCR0005121") { dr[PosMst.MST_VAN.DATA.APPR_ID] = "PCR0006076"; } } } } PosMstManager.SetMstVan(dtDataInfo); // BIN\SpcnPosCfg.ini 설정 변경용 변수 담기 m_cDevStatus.ICReader.VanIP = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.IP); if (m_cDevStatus.ICReader.UseYn == true) // 여신전문금융업법 적용여부 체크 { // iC Port m_cDevStatus.ICReader.VanPort = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.PORT); } else { // MSR Port m_cDevStatus.ICReader.VanPort = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.MSR_PORT); } m_cIcReader.UpdateIniConfig(m_cDevStatus.ICReader.VanIP, m_cDevStatus.ICReader.VanPort); } } // 터미널 ID 설정 m_cPosStatus.Base.OlePosICReaderSerialNumber = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.APPR_ID); sRet = UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 담당자 권한 마스터 로딩 /// /// public string LoadPicAuthMaster() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // 담당자 권한 마스터 로딩 sQuery = "SELECT * "; sQuery += " FROM POSMST..MST_PIC_AUTH"; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { PosMstManager.SetMstPicAuth(dtDataInfo); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 최종 거래번호 설정 /// /// public string LoadLastTradeNo() { string sQuery = ""; string sRet = UserCom.RST_ERR; try { // 최종등록번호 로딩 sQuery = " SELECT MAX(REG_NO) REG_NO FROM POSLOG..ETC_SALE_HEADER "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' "; sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' "; DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { DataRow dr = dtDataInfo.Rows[0]; int nRegNo = (int)CmUtil.LongParse(CmUtil.GetDataRowStr(dr, "REG_NO")); if (CmUtil.LongParse(m_cPosStatus.Base.RegNo) <= nRegNo) { m_cPosStatus.Base.RegNo = string.Format("{0:D5}", nRegNo + 1); } } // 최종거래번호 로딩 sQuery = " SELECT ISNULL(MAX(TRADE_NO),0) TRADE_NO FROM POSLOG..TR_SALE_HEADER "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' "; sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' "; sQuery += " AND TRADE_KINDPER NOT IN('90','91','92','93') "; DataTable dtTradeInfo = m_cMstService.Select(new string[] { sQuery }); if (dtTradeInfo != null && dtTradeInfo.Rows.Count > 0) { DataRow dr = dtTradeInfo.Rows[0]; int nTradeNo = (int)CmUtil.LongParse(CmUtil.GetDataRowStr(dr, "TRADE_NO")); if (CmUtil.LongParse(m_cPosStatus.Base.TradeNo) <= nTradeNo) { m_cPosStatus.Base.TradeNo = string.Format("{0:D5}", nTradeNo + 1); } } // 최종 중간마감 차수 로딩 sQuery = " SELECT ISNULL(MAX(MID_CLOSE_SEQ),'0') MID_CLOSE_SEQ FROM POSLOG..TR_SALE_HEADER "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' "; sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' "; sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.STATEMENT.MIDDLE_ADJUSTMENT + "' "; sQuery += " AND ISNULL(MID_CLOSE_SEQ, '0') <> '99' "; DataTable dtMidCloseSeqInfo = m_cMstService.Select(new string[] { sQuery }); if (dtMidCloseSeqInfo != null && dtMidCloseSeqInfo.Rows.Count > 0) { DataRow dr = dtMidCloseSeqInfo.Rows[0]; int nMidCloseSeq = (int)CmUtil.LongParse(CmUtil.GetDataRowStr(dr, "MID_CLOSE_SEQ")); if (CmUtil.LongParse(m_cPosStatus.Base.MidCloseSeq) <= nMidCloseSeq) { m_cPosStatus.Base.MidCloseSeq = string.Format("{0:00}", nMidCloseSeq + 1); } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 현금 알람 금액 /// /// public string LoadCashAlarm() { string sQuery = ""; string sRet = UserCom.RST_ERR; DataTable dtDataInfo = null; try { m_cPosStatus.Mst.CashAlarmAmt = 0; if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT310), "0") != "0") { //입출금 체크 sQuery = " SELECT ISNULL(SUM(CASE WHEN DPST_WTHDR_CD ='01' THEN DPST_WTHDR_AMT ELSE DPST_WTHDR_AMT * (-1) END),0) AS CASH_AMT "; sQuery += " FROM POSLOG..ETC_SALE_DPST_WTHDR "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' "; sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' "; dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { DataRow dr = dtDataInfo.Rows[0]; m_cPosStatus.Mst.CashAlarmAmt = CmUtil.DoubleParse(CmUtil.GetDataRowStr(dr, "CASH_AMT")); } //현금 결제 금액 체크 sQuery = " SELECT "; sQuery += " ISNULL(SUM(CASE WHEN P.PAY_WAY_CD = '" + ItemConst.TR_ITEM_ID.CASH_ITEM + "' OR P.PAY_WAY_CD = '" + ItemConst.TR_ITEM_ID.CHECK_ITEM + "' THEN "; sQuery += " CASE WHEN H.TRADE_DIV ='"+ ItemConst.TRAN_DIV.NORMAL +"' THEN P.PAY_AMT ELSE P.PAY_AMT * (-1) END"; sQuery += " ELSE "; sQuery += " CASE WHEN H.TRADE_DIV ='" + ItemConst.TRAN_DIV.NORMAL + "' THEN P.AMT_ENTRY_02 * (-1) ELSE P.AMT_ENTRY_02 END "; sQuery += " END ),0) AS CASH_AMT "; sQuery += " FROM POSLOG.dbo.TR_SALE_HEADER H WITH(NOLOCK) "; sQuery += " INNER JOIN POSLOG.dbo.TR_SALE_PAY P WITH(NOLOCK) "; sQuery += " ON H.CMP_CD = P.CMP_CD "; sQuery += " AND H.SALE_DT = P.SALE_DT "; sQuery += " AND H.STOR_CD = P.STOR_CD "; sQuery += " AND H.POS_NO = P.POS_NO "; sQuery += " AND H.TRADE_NO = P.TRADE_NO "; sQuery += " WHERE H.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND H.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND H.SALE_DT = '" + m_cPosStatus.Base.SaleDate + "' "; sQuery += " AND H.POS_NO = '" + m_cPosStatus.Base.PosNo + "' "; sQuery += " AND H.TRADE_DIV IN ('" + ItemConst.TRAN_DIV.NORMAL + "','" + ItemConst.TRAN_DIV.REFUND + "') "; // 정상, 반품 sQuery += " AND H.TRAIN_MODE_YN = '0' "; // 일반 sQuery += " AND H.TRADE_KINDPER IN ('" + ItemConst.TRAN_KIND.NORMAL.SALE + "','" + ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG + "','" + ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE + "') "; // 매출, 예약(등록/완료) sQuery += " AND ( "; sQuery += " P.PAY_WAY_CD IN ('" + ItemConst.TR_ITEM_ID.CASH_ITEM + "','" + ItemConst.TR_ITEM_ID.CHECK_ITEM + "','" + ItemConst.TR_ITEM_ID.GIFT_ITEM + "','" + ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM + "') "; // 현금, 수표, 상품권, 외환 sQuery += " OR P.PAY_WAY_CD + P.PAY_DTL_CD_01 IN ('" + ItemConst.TR_ITEM_ID.PAYETC_ITEM + ItemConst.TR_ITEM_ID.PAYETC.MEAL_TIKET + "') "; //식권 sQuery += " ) "; dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { DataRow dr = dtDataInfo.Rows[0]; m_cPosStatus.Mst.CashAlarmAmt = CmUtil.DoubleAdd(m_cPosStatus.Mst.CashAlarmAmt, CmUtil.DoubleParse(CmUtil.GetDataRowStr(dr, "CASH_AMT"))); } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } #region I/F 점포정보 조회 /// /// I/F 점포정보 조회 /// /// private void LoadJoinStorInfo() { string sQuery = string.Empty; DataTable dtDataInfo = null; try { m_cPosStatus.Mst.JOIN_CMP_CD = ""; m_cPosStatus.Mst.JOIN_BRAND_CD = ""; m_cPosStatus.Mst.JOIN_STOR_CD = ""; m_cPosStatus.Mst.JOIN_ITEM_CD = ""; sQuery = ""; sQuery += "SELECT TOP 1 \n"; sQuery += " CMP_CD \n"; sQuery += " , STOR_CD \n"; sQuery += " , ISNULL(JOIN_CMP_CD, '') JOIN_CMP_CD \n"; sQuery += " , ISNULL(JOIN_BRAND_CD, '') JOIN_BRAND_CD \n"; sQuery += " , ISNULL(JOIN_STOR_CD, '') JOIN_STOR_CD \n"; sQuery += " , ISNULL(JOIN_ITEM_CD, '') JOIN_ITEM_CD \n"; sQuery += "FROM POSMST..MST_OUT_SD_VEND_STOR \n"; sQuery += "WHERE \n"; sQuery += " CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n"; sQuery += "AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n"; sQuery += "AND POS_NO IN ('00', '" + m_cPosStatus.Base.PosNo + "') \n"; sQuery += "AND USE_YN = '" + PosConst.MST_USE_YN.YES + "' \n"; sQuery += "ORDER BY POS_NO DESC \n"; // 조회 dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { DataRow dr = dtDataInfo.Rows[0]; m_cPosStatus.Mst.JOIN_CMP_CD = CmUtil.GetDataRowStr(dr, "JOIN_CMP_CD"); m_cPosStatus.Mst.JOIN_BRAND_CD = CmUtil.GetDataRowStr(dr, "JOIN_BRAND_CD"); m_cPosStatus.Mst.JOIN_STOR_CD = CmUtil.GetDataRowStr(dr, "JOIN_STOR_CD"); m_cPosStatus.Mst.JOIN_ITEM_CD = CmUtil.GetDataRowStr(dr, "JOIN_ITEM_CD"); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return; } #endregion //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180510 #region 고객 구매이력 조회 마스터 조회 /// /// 고객 구매이력 조회 마스터 조회 /// /// private void LoadSendCpnMstInfo() { string sQuery = string.Empty; DataTable dtDataInfo = null; try { m_cPosStatus.Mst.HpyCokStorYn = "0"; m_cPosStatus.Mst.BuyHistShowYn = "0"; m_cPosStatus.Mst.CpnSendYn = "0"; sQuery = ""; sQuery += "SELECT CMP_CD \n"; sQuery += " , STOR_CD \n"; sQuery += " , ISNULL(HAPPY_YN, '0') HAPPY_YN \n"; sQuery += " , ISNULL(PRINT_YN, '0') PRINT_YN \n"; sQuery += " , ISNULL(SEND_YN, '0') SEND_YN \n"; //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528 //쿠폰 발송 횟수 제한 기능 sQuery += " , ISNULL(CPN_SEND_LIMIT_CNT, '0') CPN_SEND_LIMIT_CNT \n"; //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528 sQuery += " FROM POSMST..STR_SEND_CPN_MST \n"; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n"; // 조회 dtDataInfo = m_cMstService.Select(new string[] { sQuery }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { DataRow dr = dtDataInfo.Rows[0]; m_cPosStatus.Mst.HpyCokStorYn = CmUtil.GetDataRowStr(dr, "HAPPY_YN"); m_cPosStatus.Mst.BuyHistShowYn = CmUtil.GetDataRowStr(dr, "PRINT_YN"); m_cPosStatus.Mst.CpnSendYn = CmUtil.GetDataRowStr(dr, "SEND_YN"); //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 start, 20180528 //쿠폰 발송 횟수 제한 기능 m_cPosStatus.Mst.CpnSendLimitCnt = CmUtil.GetDataRowStr(dr, "CPN_SEND_LIMIT_CNT"); //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180528 } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return; } #endregion //#20180418 고객 구매이력 정보 표시 및 해피쿠폰 발송 end, 20180510 } }