//#20180329 프린터 간헐적 미출력 증상 수정 start //출력 할때 마다 open, close 하는 부분 한번만 하도록 수정 //#define PRT_OPENCLOSE //적용시 주석 해제 //#20180329 프린터 간헐적 미출력 증상 수정 end using System; using System.Text; using System.Collections; using System.Collections.Generic; using System.Data; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Windows.Forms; using Newtonsoft.Json; namespace Cosmos.Win { /// /// 판매화면(상품등록) 모듈 클래스 /// public class SaleMainProcess { private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조 private DeviceStatus m_cDevStatus = new DeviceStatus(); // 장치정보 참조 private IDatabaseSQL m_cSqlDbService = null; // 데이터베이스 관리 private IDataProcessUs m_cDataService = null; // 거래데이터 합계금액 계산 및 관리 private ISalePluItemUs m_cPluService = null; // 판매 등록 관리 private IMasterUs m_cMstService = null; // 마스터 인터페이스 private ICustDisplayUs m_cCustDisplay = null; // 고객디스플레이 관리 private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 private ISaleCompleteUs m_cSaleComplete = null; // 거래 완료처리 private IMasterUs m_cMstPayDcService = null; // 결제,할인 마스터 private ITableUs m_cTableSvr = null; // 테이블 서비스 관리 private IServiceUs m_cOrderSheetSvr = null; // 주방 주문서 private INetworkHttp m_cNetworkHttp = null; //#20171227 인천공항 포스연동 start, phj private IAirPortTran m_cAirPortTran = null; //#20171227 인천공항 포스연동 end, phj /// /// 세트상품 그룹 마스터 /// public DataTable m_dtSetMenuGroup = new DataTable(); /// /// 세트상품 상세 마스터 /// public DataTable m_dtSetMenuDetail = new DataTable(); ///// ///// 강제 부가메뉴 그룹 마스터 ///// //public DataTable m_dtForceSubMenuGroup = new DataTable(); ///// ///// 강제 부가메뉴 상세 마스터 ///// //public DataTable m_dtForceSubMenuDetail = new DataTable(); private ICashdrawerUs m_cCashDrawer = null;//170811 dkshin 돈통 열리는 시점 변경(현금영수증 전) /// /// 생성자 /// public SaleMainProcess() { m_cPosStatus = (PosStatus)StateObject.POS; m_cTrnStatus = (TranStatus)StateObject.TRAN; m_cDevStatus = (DeviceStatus)StateObject.DEVICE; m_cSqlDbService = (IDatabaseSQL)sManager.InitServiceInstance(ServiceLists.AGENT_DATABASE.DLL, ServiceLists.AGENT_DATABASE.DATABASE_MSSQL); m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER); m_cCustDisplay = (ICustDisplayUs)sManager.InitServiceInstance(ServiceLists.ASV_CUSTDISPLAY.DLL, ServiceLists.ASV_CUSTDISPLAY.CUST_DISPLAY); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); m_cMstPayDcService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.PAY_DC_MASTER); m_cTableSvr = (ITableUs)sManager.InitServiceInstance(ServiceLists.BSV_TABLE.DLL, ServiceLists.BSV_TABLE.TABLE_SERVICE); m_cOrderSheetSvr = (IServiceUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.POS_RECEIPT_ORDERSHEET); m_cCashDrawer = (ICashdrawerUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_CASHDRAWER); //#20171227 인천공항 포스연동 start, phj m_cAirPortTran = (IAirPortTran)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.AIRPORT_TRAN); //#20171227 인천공항 포스연동 end, phj m_cNetworkHttp = (INetworkHttp)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_HTTP); } /// /// 판매 기능키 처리 /// /// 기능키 /// 입력데이터 /// 선택그리드행 /// 기타 /// //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start //기존 //public bool ExecuteSaleMainProcess(string sMenuKey, string sInPutData, string sSelRow, string sEtcData) //변경 public bool ExecuteSaleMainProcess(string sMenuKey, string sInPutData, string sSelRow, string sEtcData, bool sMenuKeyAuth = false) //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end { bool bRet = false; try { m_cPosStatus.Sale.ScreenSaverTime = ""; //화면보호기 대기시간 설정 //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start //기존 //if (WinBasic.CheckMenuKeyAuth(sMenuKey) == false) return false; // 기능키 판매원 권한 체크 //변경 if (sMenuKeyAuth == false) { if (WinBasic.CheckMenuKeyAuth(sMenuKey) == false) return false; // 기능키 판매원 권한 체크 } //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end //string sMngAuth = PosMstManager.GetMstPicAuth(m_cPosStatus.Base.CashierNo + sMenuKey); //switch (sMngAuth) //{ // case PosConst.MNG_AUTH_DIV.NON_PERMISSION: // WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0308), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0505), false); // return false; // case PosConst.MNG_AUTH_DIV.PERMISSION: // break; // case PosConst.MNG_AUTH_DIV.SUPERVISOR: // if (WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_ADMIN }) == UserCom.RST_ERR) return false; // //string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_CASHIER_INPUT, "Supervisor" }); // //if (sRet != UserCom.RST_OK) // //{ // // return false; // //} // break; //} if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) // 판매대기 모드 { if (WaitSaleDataCheck(sMenuKey) == false) return false; switch (sMenuKey) { case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록 bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData); break; case PosKey.MENU_KEY.GIFT_SALE: case PosKey.MENU_KEY.PREPAID_CARD: RegisterSellGift(sMenuKey); break; case PosKey.MENU_KEY.RETURN_ITEM: RegisterReturnItem(); break; case PosKey.MENU_KEY.TRADE_STOP: //거래중지 bRet = TradeStop(); break; case PosKey.MENU_KEY.SALE_LOSS: //판매로스 bRet = RegSaleLosss(sSelRow); break; case PosKey.MENU_KEY.ORDER_COMPLETED: //주문완료 bRet = OrderCompleted(); break; case PosKey.MENU_KEY.SEARCH: //상품 조회 bRet = ItemSearch(); break; case PosKey.MENU_KEY.HOLD_DEAL: //보류 bRet = HoldDeal(); break; case PosKey.MENU_KEY.CASH_APPROVAL_LATER: //사후 현금영수증 { PayCashbill(sMenuKey); break; } case PosKey.MENU_KEY.LAST_DEAL_PRINT: //직전영수증 출력 bRet = LastDealPrint(); break; case PosKey.MENU_KEY.RESERVATIONS_REGISTER: //예약등록 { RegSaleReservations(); break; } case PosKey.MENU_KEY.RESERVATION_COMPLETED: //예약완료 { RegSaleReservedFinish(); break; } case PosKey.MENU_KEY.RECEIPT_REPRINT: //영수증 재발행 { SaleReReceiptRePrint(); break; } case PosKey.MENU_KEY.HP_GIFT_CHARGED: //해피 기프트 충전 { PayHappyGift(PosKey.MENU_KEY.HP_GIFT_CHARGED); break; } case PosKey.MENU_KEY.RETURN_RECEIPT: //영수증 반품 SaleRefundReceipt(); break; case PosKey.MENU_KEY.HPP_APPROVAL_LATER: // 추후적립 HappyPointAfterSave(); break; case PosKey.MENU_KEY.HAPPY_ORDERS: // 해피오더 HappyOrder(); break; case PosKey.MENU_KEY.HP_REGULAR_CUST: // 단골매장등록 HappyPointRegularCust(); break; case PosKey.MENU_KEY.EXCHANGE: // 환전 OpenManualCashdrawer(); break; case PosKey.MENU_KEY.HAPPY_BUZ_SEARCH: // 해피버즈 현황 조회 HappyBuzzSearch(); break; case PosKey.MENU_KEY.CHECK_SEARCH: // 수표조회 PayCheck(sMenuKey); break; case PosKey.MENU_KEY.GIFT_CARD_SCH: // 상품권조회 PayGiftSearch(sMenuKey); break; case PosKey.MENU_KEY.MOBILE_COUPON_SCH: // 모바일쿠폰조회 PayMobileCouponSearch(sMenuKey); break; case PosKey.MENU_KEY.ONLINE_COUPONS_SCH: // 온라인쿠폰조회(중국) PayOnLineCoupon(sMenuKey); break; case PosKey.MENU_KEY.BRITHDAY_CANDLE: // 생일초계산 BrithDayCandle(sMenuKey); break; case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료 bRet = OrderCancelExit(); break; case PosKey.MENU_KEY.EDIT_CUST_CNT: // 고객수 수정 bRet = EditCustCnt(); break; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start //기존 /* //17.05.18 dkshin 쇼킹박스 추가 case PosKey.MENU_KEY.SHOCKING_BOX: // 쇼킹박스 상품 불러오기 bRet = ShockingBox(sEtcData); break; */ //변경 case PosKey.MENU_KEY.SHOCKING_BOX: case PosKey.MENU_KEY.ITEMINFO_PRINT: bRet = ShockingBox(sMenuKey, sEtcData); break; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 case PosKey.MENU_KEY.HAPPY_GIFTCARD_CHARGE: // 해피기프트(신) 충전 //HappyGiftCardRecharge(sMenuKey); HappyGiftNewRecharge(sMenuKey); break; // 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10) case PosKey.MENU_KEY.CLEAR: // 지움 // 키보드 화살표 키 클릭 시 오류POP-UP 수정(2017.07.14) case PosKey.MENU_KEY.SCANKEY_UP_ARROW: case PosKey.MENU_KEY.SCANKEY_DOWN_ARROW: bRet = true; break; //#20171227, 예약증 양식 출력 Start case PosKey.MENU_KEY.RESERVATION_FORM_PRINT: // 예약증 양식 출력 bRet = ReservationFormPrint(); break; //#20171227, 예약증 양식 출력 End //#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 start case PosKey.MENU_KEY.TMONEY_SEARCH: //교통카드 잔액조회 PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" }); break; //#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 end //#20180413 웰컴카드 신규기능 추가 start,phj case PosKey.MENU_KEY.WELCOMECARD_ISSUE: // 웰컴카드 발급화면 bRet = WelcomeCard_Issue(sMenuKey, "1"); break; case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER: // 해피앱 고객등록 bRet = WelcomeCard_Issue(sMenuKey, "1"); break; //#20180413 웰컴카드 신규기능 추가 end,phj //********************************************************************* // (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 기능키 클릭 처리 //--------------------------------------------------------------------- // - 만약 해피포인트 및 제휴할인 카드가 등록되어 있을 경우 // 등록된 역순으로 취소 처리한다. //********************************************************************* #region 해피포인트 제휴할인 선리딩 처리를 위한 기능키 클릭 처리 case PosKey.MENU_KEY.COOPERATION_CARD_CANCEL: //*** MoonSeokWoo 2017.12.12 Add //폼 획득 frmSaleMain fSalMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //*** MoonSeokWoo 2017.12.12 End // 만약 해피포인트 카드 번호 및 제휴할인 카드 번호가 존재할 경우 ----- if (m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "") { if (m_cPosStatus.Sale.strPriorReading_Title[1] != null && m_cPosStatus.Sale.strPriorReading_Title[1] != "") { // 만약 리딩 타이틀 배열 변수에 1번째 리딩 항목이 존재할 경우 ----- if (m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC") { // 해피포인트 카드 변수 클리어 ----- m_cPosStatus.Sale.strHappyPointCardNo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start m_cPosStatus.Sale.strEmpInfo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end } else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; } fSalMain.AllianceCardInit(false , m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC" ? MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0789) : m_cPosStatus.Sale.strPriorReading_Title[1] , m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC" ? true : false); m_cPosStatus.Sale.strPriorReading_Title[1] = ""; } else if (m_cPosStatus.Sale.strPriorReading_Title[0] != null && m_cPosStatus.Sale.strPriorReading_Title[0] != "") { // 만약 리딩 타이틀 배열 변수에 0번째 리딩 항목이 존재할 경우 ----- if (m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC") { // 해피포인트 카드 변수 클리어 ----- m_cPosStatus.Sale.strHappyPointCardNo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start m_cPosStatus.Sale.strEmpInfo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end } else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; } fSalMain.AllianceCardInit(false , m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC" ? MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0789) : m_cPosStatus.Sale.strPriorReading_Title[0] , m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC" ? true : false); m_cPosStatus.Sale.strPriorReading_Title[0] = ""; } } break; #endregion default: //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start //기존 /* if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0020); // 판매 대기중에 처리 할수 없는 기능 입니다. } */ //변경 if (WinSale.ExecuteBinessRun(sMenuKey, sMenuKeyAuth) == UserCom.RST_IGNORE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0020); // 판매 대기중에 처리 할수 없는 기능 입니다. } //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end break; } } else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING) // 상품등록 중 모드 { //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start if (m_cTrnStatus.Head.ShockingBoxStat == "1" && m_cTrnStatus.Head.ShockingBoxTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX && sMenuKey != PosKey.MENU_KEY.TRADE_STOP) { WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054)); return bRet; } //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end switch (sMenuKey) { case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록 bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData); break; case PosKey.MENU_KEY.CANCEL_ITEM: // 지정취소 bRet = CancelPluItem(sSelRow); break; case PosKey.MENU_KEY.QUANTITY: // 수량변경 case PosKey.MENU_KEY.QTY_PLUS: case PosKey.MENU_KEY.QTY_MINUS: bRet = QtyChangePluItem(sMenuKey, sSelRow, sInPutData); break; case PosKey.MENU_KEY.ADD_MENU: // 부가메뉴 bRet = RegisterChoiceSubMenu(sSelRow); break; case PosKey.MENU_KEY.FLAVOR: // 플레이버 bRet = RegisterFlavourMenu(""); break; case PosKey.MENU_KEY.PAYMENTS: // 결제 bRet = RegisterPayment("", ""); break; case PosKey.MENU_KEY.CASH: // 현금 case PosKey.MENU_KEY.CREDIT_CARD: // 신용카드 case PosKey.MENU_KEY.WECHATPAY: //위챗페이 case PosKey.MENU_KEY.WECHATPAY_BAIRONG: //샤오청쉬 위챗페이-바이롱;girak.kim;2017.09.11.001 case PosKey.MENU_KEY.XIAOCHENGXU_GIFTCARD: //샤오청쉬 기프트카드;girak.kim;2017.09.11.001 bRet = RegisterPayment(sMenuKey, sInPutData); break; case PosKey.MENU_KEY.ITEM_DC_AMT: //단품 금액 할인 case PosKey.MENU_KEY.ITEM_DC_RATE: //단품 율 할인 case PosKey.MENU_KEY.FREE_DC: //서비스(무료) case PosKey.MENU_KEY.ELOVE_DC: //환경사랑DC case PosKey.MENU_KEY.ITEM_CHAGE_CPN: //제품교환권 case PosKey.MENU_KEY.IN_EMP_DC: //입점매장직원할인(단품) bRet = RegisterItemDc(sMenuKey, sSelRow, sInPutData); break; case PosKey.MENU_KEY.TRADE_STOP: //거래중지 bRet = TradeStop(); break; case PosKey.MENU_KEY.NOTAX: //NO TAX bRet = ItemNoTax(sSelRow); break; //#Rhee, 20180212 ALL NO TAX 기능 추가 Start case PosKey.MENU_KEY.ALL_NOTAX: //ALL NO TAX bRet = ItemAllNoTax(); break; //#Rhee, 20180212 ALL NO TAX 기능 추가 End case PosKey.MENU_KEY.ORDER_COMPLETED: //주문완료 bRet = OrderCompleted(); break; case PosKey.MENU_KEY.ITEM_MEMO: //상품메모 bRet = ItemMmeo(false); break; case PosKey.MENU_KEY.SEARCH: //상품 조회 bRet = ItemSearch(); break; case PosKey.MENU_KEY.HOLD_DEAL: //보류 bRet = HoldDeal(); break; case PosKey.MENU_KEY.TAKE_IN_OUT: //TAKE_IN_OUT bRet = SetTakeInOut(); break; case PosKey.MENU_KEY.BUNDLE_ITEM: //묶음상품/쇼킹박스 bRet = BundleiTem(sMenuKey); break; case PosKey.MENU_KEY.DUTCH_PAY: //더치페이 bRet = DutchPay(sMenuKey, "0"); break; case PosKey.MENU_KEY.DUTCH_PAY_AMT: //더치페이(금액) bRet = DutchPayAmt(sMenuKey, "0"); break; case PosKey.MENU_KEY.SET_MENU_CHANGE: // 세트메뉴 상품 변경 bRet = SetMenuItemChange(sSelRow); break; case PosKey.MENU_KEY.FIRE_KEY: // FIRE KEY bRet = ItemMmeo(true); break; case PosKey.MENU_KEY.EXCHANGE: // 환전 OpenManualCashdrawer(); break; case PosKey.MENU_KEY.HAPPY_BUZ_SEARCH: // 해피버즈 현황 조회 HappyBuzzSearch(); break; case PosKey.MENU_KEY.CHECK_SEARCH: // 수표조회 PayCheck(sMenuKey); break; case PosKey.MENU_KEY.GIFT_CARD_SCH: // 상품권조회 PayGiftSearch(sMenuKey); break; case PosKey.MENU_KEY.MOBILE_COUPON_SCH: // 모바일쿠폰조회 PayMobileCouponSearch(sMenuKey); break; case PosKey.MENU_KEY.ONLINE_COUPONS_SCH: //온라인쿠폰조회(중국) PayOnLineCoupon(sMenuKey); break; case PosKey.MENU_KEY.ORDER_PRINT: // 주문내역서 출력 bRet = OrderBillPrint(); break; case PosKey.MENU_KEY.CUSTOMER_CLAIMS_LIST: // 고객 불만 등록 case PosKey.MENU_KEY.REG_PVC: // PVC상자재고 case PosKey.MENU_KEY.POS_ETC_RECEIPT: // 간이영수증 case PosKey.MENU_KEY.RECEIPT_REPRINT: // 영수증 재발행 WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021); // 상품 등록중에 처리 할수 없는 기능 입니다 break; case PosKey.MENU_KEY.BRITHDAY_CANDLE: // 생일초계산 BrithDayCandle(sMenuKey); break; case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료 bRet = OrderCancelExit(); break; case PosKey.MENU_KEY.MULTI_DCITEM: // 선택 아이템 할인 MultiItemDc(sMenuKey); break; case PosKey.MENU_KEY.EDIT_CUST_CNT: // 고객수 수정 bRet = EditCustCnt(); break; case PosKey.MENU_KEY.SALE_LOSS: //판매로스 bRet = RegSaleLosss(sSelRow); break; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start //기존 /* //17.05.18 dkshin 쇼킹박스 추가 case PosKey.MENU_KEY.SHOCKING_BOX: bRet = ShockingBox(sEtcData); break; */ //변경 case PosKey.MENU_KEY.SHOCKING_BOX: case PosKey.MENU_KEY.ITEMINFO_PRINT: bRet = ShockingBox(sMenuKey, sEtcData); break; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end // 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10) case PosKey.MENU_KEY.CLEAR: // 지움 // 화살표 키 클릭 시 오류POP-UP 수정(2017.07.14) case PosKey.MENU_KEY.SCANKEY_UP_ARROW: case PosKey.MENU_KEY.SCANKEY_DOWN_ARROW: bRet = true; break; //#20171227, 예약증 양식 출력 Start case PosKey.MENU_KEY.RESERVATION_FORM_PRINT: // 예약증 양식 출력 bRet = ReservationFormPrint(); break; //#20171227, 예약증 양식 출력 End //#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 start case PosKey.MENU_KEY.TMONEY_SEARCH: //교통카드 잔액조회 PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" }); break; //#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 end //#20180413 웰컴카드 신규기능 추가 start,phj case PosKey.MENU_KEY.WELCOMECARD_ISSUE: // 웰컴카드 발급 bRet = WelcomeCard_Issue(sMenuKey, "1"); break; case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER: // 웰컴카드 해피앱 고객등록 bRet = WelcomeCard_Issue(sMenuKey, "1"); break; //#20180413 웰컴카드 신규기능 추가 end,phj //********************************************************************* // (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 기능키 클릭 처리 //--------------------------------------------------------------------- // - 만약 해피포인트 및 제휴할인 카드가 등록되어 있을 경우 // 등록된 역순으로 취소 처리한다. //********************************************************************* #region 해피포인트 제휴할인 선리딩 처리를 위한 기능키 클릭 처리 case PosKey.MENU_KEY.COOPERATION_CARD_CANCEL: // 만약 해피포인트 카드 번호 및 제휴할인 카드 번호가 존재할 경우 ----- if (m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "") { if (m_cPosStatus.Sale.strPriorReading_Title[1] != null && m_cPosStatus.Sale.strPriorReading_Title[1] != "") { // 만약 리딩 타이틀 배열 변수에 1번째 리딩 항목이 존재할 경우 ----- if (m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC") { // 해피포인트 카드 변수 클리어 ----- m_cPosStatus.Sale.strHappyPointCardNo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start m_cPosStatus.Sale.strEmpInfo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end } else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; } m_cPosStatus.Sale.strPriorReading_Title[1] = ""; } else if (m_cPosStatus.Sale.strPriorReading_Title[0] != null && m_cPosStatus.Sale.strPriorReading_Title[0] != "") { // 만약 리딩 타이틀 배열 변수에 0번째 리딩 항목이 존재할 경우 ----- if (m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC") { // 해피포인트 카드 변수 클리어 ----- m_cPosStatus.Sale.strHappyPointCardNo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start m_cPosStatus.Sale.strEmpInfo = ""; //#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end } else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; } m_cPosStatus.Sale.strPriorReading_Title[0] = ""; } } break; #endregion //#Rhee, 20180130 단품 할인 전체 취소 추가 Start case PosKey.MENU_KEY.DISCOUNT_CANCEL: //단품 금액 할인 전체 취소 bRet = RegisterItemDcCancel(sMenuKey, ItemConst.PLU_DC_DIV.POS_DC, ItemConst.PLU_DC_TYPE.DC_ITEM); break; //#Rhee, 20180130 단품 할인 전체 취소 추가 End default: //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start //기존 /* if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021); // 상품 등록중에 처리 할수 없는 기능 입니다 } */ //변경 if (WinSale.ExecuteBinessRun(sMenuKey, sMenuKeyAuth) == UserCom.RST_IGNORE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021); // 상품 등록중에 처리 할수 없는 기능 입니다 } //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end break; } } else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET) // 세트메뉴 등록 중 모드 { switch (sMenuKey) { case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록 bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData); break; case PosKey.MENU_KEY.EXCHANGE: // 환전 OpenManualCashdrawer(); break; case PosKey.MENU_KEY.TRADE_STOP: // 거래중지 bRet = TradeStop(); break; case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료 bRet = OrderCancelExit(); break; // 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10) case PosKey.MENU_KEY.CLEAR: // 지움 bRet = true; break; default: WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0023); // 세트메뉴 등록중에 처리 할수 없는 기능 입니다 //if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE) //{ // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0023); // 세트메뉴 등록중에 처리 할수 없는 기능 입니다 //} break; } } else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT) // 부가메뉴 등록 중 모드 { switch (sMenuKey) { //#2017122 #13238 LG 은평_은평_부가메뉴 입력 안되는 증상 start, phj //기존 /* #if false //grayber@20171213 부가메뉴 등록중 일때 동작 개선 start //case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록 // bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData); // break; #endif //grayber@20171213 부가메뉴 등록중 일때 동작 개선 end */ //변경 case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록 bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData); break; //#2017122 #13238 LG 은평_은평_부가메뉴 입력 안되는 증상 end, phj case PosKey.MENU_KEY.CANCEL_ITEM: // 지정취소 bRet = CancelPluItem(sSelRow); break; case PosKey.MENU_KEY.QUANTITY: // 수량변경 case PosKey.MENU_KEY.QTY_PLUS: case PosKey.MENU_KEY.QTY_MINUS: bRet = QtyChangePluItem(sMenuKey, sSelRow, sInPutData); break; case PosKey.MENU_KEY.EXCHANGE: // 환전 OpenManualCashdrawer(); break; case PosKey.MENU_KEY.TRADE_STOP: // 거래중지 bRet = TradeStop(); break; case PosKey.MENU_KEY.ORDER_COMPLETED: // 주문완료 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT) { bRet = OrderCompleted(); } else { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0022); // 부가메뉴 등록 중 처리 할 수 없는 기능 입니다. } break; case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료 bRet = OrderCancelExit(); break; // 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10) case PosKey.MENU_KEY.CLEAR: // 지움 bRet = true; break; default: WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0022); // 부가메뉴 등록 중 처리 할 수 없는 기능 입니다. break; } } //else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_FLAVOUR) // 플레이버 등록 중 모드 //{ // switch (sMenuKey) // { // case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록 // bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData); // break; // case PosKey.MENU_KEY.CANCEL_ITEM: // 지정취소 // bRet = CancelPluItem(sSelRow); // break; // case PosKey.MENU_KEY.QUANTITY: // 수량변경 // case PosKey.MENU_KEY.QTY_PLUS: // case PosKey.MENU_KEY.QTY_MINUS: // bRet = QtyChangePluItem(sMenuKey, sSelRow, sInPutData); // break; // default: // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0033); // 플레이버 등록 중 처리 할 수 없는 기능 입니다. // break; // } //} else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_WAIT) // 결제대기 중 모드 { if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.TABLE_GROUP_PAY) { switch (sMenuKey) { case PosKey.MENU_KEY.CASH: // 현금 case PosKey.MENU_KEY.CREDIT_CARD: // 신용카드 case PosKey.MENU_KEY.WECHATPAY: //위챗페이 bRet = RegisterPayment(sMenuKey, sInPutData); break; case PosKey.MENU_KEY.PAYMENTS: // 결제 bRet = RegisterPayment("", ""); break; case PosKey.MENU_KEY.EXCHANGE: // 환전 OpenManualCashdrawer(); break; case PosKey.MENU_KEY.HAPPY_BUZ_SEARCH: // 해피버즈 현황 조회 HappyBuzzSearch(); break; case PosKey.MENU_KEY.CHECK_SEARCH: // 수표조회 PayCheck(sMenuKey); break; case PosKey.MENU_KEY.DUTCH_PAY: // 더치페이 bRet = DutchPay(sMenuKey, "0"); break; case PosKey.MENU_KEY.DUTCH_PAY_AMT: // 더치페이(금액) bRet = DutchPayAmt(sMenuKey, "0"); break; case PosKey.MENU_KEY.BRITHDAY_CANDLE: // 생일초계산 BrithDayCandle(sMenuKey); break; case PosKey.MENU_KEY.ITEM_DC_AMT: // 단품 금액 할인 case PosKey.MENU_KEY.ITEM_DC_RATE: // 단품 율 할인 case PosKey.MENU_KEY.FREE_DC: // 서비스(무료) case PosKey.MENU_KEY.ELOVE_DC: // 환경사랑DC case PosKey.MENU_KEY.ITEM_CHAGE_CPN: // 제품교환권 case PosKey.MENU_KEY.IN_EMP_DC: // 입점매장직원할인(단품) bRet = RegisterItemDc(sMenuKey, sSelRow, sInPutData); break; case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료 bRet = OrderCancelExit(); break; //#20180413 웰컴카드 신규기능 추가 start,phj case PosKey.MENU_KEY.WELCOMECARD_ISSUE: // 웰컴카드 발급화면 bRet = WelcomeCard_Issue(sMenuKey, "2"); break; case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER:// 웰컴카드 해피앱 고객등록 bRet = WelcomeCard_Issue(sMenuKey, "2"); break; //#20180413 웰컴카드 신규기능 추가 end,phj //#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 start,phj /* // grayber@20180115 인천공항 VIP 라운지 start - 결제 대기중 메뉴키 기능 추가 case PosKey.MENU_KEY.AIRPORT_VIP_LOUNGE: bRet = RegisterPayment("", ""); break; // grayber@20180115 인천공항 VIP 라운지 end */ //#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 end,phj //grayber@20180208 코레일 마일리지 입력 start - 메뉴키 기능 추가 case PosKey.MENU_KEY.KORAIL_MILEAGE: bRet = RegisterPayment("", ""); break; //grayber@20180208 코레일 마일리지 입력 end default: //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start //기존 /* if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0112); } */ //변경 if (WinSale.ExecuteBinessRun(sMenuKey, sMenuKeyAuth) == UserCom.RST_IGNORE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0112); } //#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end break; } } } else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING) // 결제 중 모드 { } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } finally { m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss"); //화면보호기 대기시간 설정 } return bRet; } /// /// 상품 등록 처리 /// /// 선택행 /// (0:수입력, 1:메뉴, 2:스켄) + (메뉴코드,스캔코드) /// 입력데이터 /// public bool RegisterPluItem(string sSelRow, string sInPutTypeCode, string sInPutData) { bool bRet = false; try { //17.05.18 dkshin 쇼킹박스 추가 //if( m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.LOG.SHOCKING_BOX ) if (m_cTrnStatus.Head.ShockingBoxStat == "1") { WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0698)); return bRet; } // 판매화면 //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); if (sInPutTypeCode != "") { if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR) { // grayber@20180108 [BR] 바코드 18자리 인식 추가 start //기존 //BR, DD //if (sInPutTypeCode.Length == 17 && CmUtil.RightH(sInPutTypeCode, 6) == "N9999X") //{ // //WEB 호출! // WinBasic.ShowWebPos(PosKey.MENU_KEY.ORDER_REG, sInPutTypeCode.Substring(1)); // return true; //} // 변경 if ((sInPutTypeCode.Length == (1 + 16) || sInPutTypeCode.Length == (1 + 18)) && CmUtil.RightH(sInPutTypeCode, 6) == "N9999X" ) { //WEB 호출! WinBasic.ShowWebPos(PosKey.MENU_KEY.ORDER_REG, sInPutTypeCode.Substring(1)); return true; } // grayber@20180108 [BR] 바코드 18자리 인식 추가 end } // 상품등록 처리 string nStat = m_cPluService.SetItemCode(sSelRow, sInPutTypeCode, sInPutData); if (nStat != UserCom.RST_OK) return false; // 판매모드 변경 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) { m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; //cFormSaleMain.DisplayInit(false, true); //#20180110 첫번째 제품 선택시 POS MOT에 등록한 TTL or WAV 재생 start //#13753 POS MOT음성 기능 추가 개발요청 start,phj //기존 //if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2") //변경 //#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정 start,phj //기존 /* if ((m_cTrnStatus.Head.CmpCd == "PCKR" && m_cPosStatus.Mst.DrtFrcsDiv == "10") && //PCKR이고 직영일 때! m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2") */ //변경 //if (m_cTrnStatus.Head.CmpCd == "PCKR" && // //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj // PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1" && // //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj // (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2")) ////#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정 end,phj ////#13753 POS MOT음성 기능 추가 개발요청 end,phj //{ // frmSaleMain fSalMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // fSalMain.SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.FIRSTPLU_INPUT, ""); //} //#20180110 첫번째 제품 선택시 POS MOT에 등록한 TTL or WAV 재생 end //#20181016 메모리 사용량 로그남기기 start //20181108 주석처리 //m_cDataCommon.MemoryCheckLog(); //#20181016 메모리 사용량 로그남기기 end } //#20170926 포스 화면 구성 A안 사용시 후불 매장인 경우 제품 추가하면 기능키가 변경 안됨 start //else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING) //{ // cFormSaleMain.DisplayInit(false, true); //} //#20170926 포스 화면 구성 A안 사용시 후불 매장인 경우 제품 추가하면 기능키가 변경 안됨 end //// 상품 아이템 //ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); //Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[alPluItem.Count - 1]; ////if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && cPluItem.CANCEL_DIV != "1" && cPluItem.CANCEL_DIV_MAIN != "1") //if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID // || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) // && cPluItem.CANCEL_DIV != "1" && cPluItem.CANCEL_DIV_MAIN != "1") //{ // if ((cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN || // cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.GIFT || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.PREPAID ) // && cPluItem.OPEN_ITEM_DIV == "1" && (cPluItem.SALE_PRC == 1 || cPluItem.SALE_PRC == 0)) //2017-03-27 안차장요청으로 추가 0원 // { // while (true) // { // // 상품단가 입력 처리 // string sPrice = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.PRICE }); // if (sPrice != UserCom.RST_ERR) // { // double nPrice = CmUtil.MathRounds(m_cDataService.DoubleParse(sPrice), m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc)); // if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) // { // // 상품 단가 적용 // cPluItem.SALE_PRC = m_cDataService.DoubleParse(sPrice); // m_cDataService.UpdatePluItemAmount(cPluItem); // // 상품 판매가 계산 // m_cPluService.ItemAmountExeccute(true, true); // break; // } // else // { // if (nPrice > 0 && nPrice == CmUtil.DoubleParse(sPrice)) // { // // 상품 단가 적용 // cPluItem.SALE_PRC = nPrice; // m_cDataService.UpdatePluItemAmount(cPluItem); // // 상품 판매가 계산 // m_cPluService.ItemAmountExeccute(true, true); // break; // } // } // } // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0538); // } // } //} //// 강제 부가메뉴 등록 처리 사용안함 해피스테이션 //RegisterForceSubMenu(); } // 세트상품 체크 및 등록 처리 //RegisterSetMenu(); // 상품등록 내역 화면 표시((0:LastItem, 1::OldFocus)) -사용안함 해피스테이션 //if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR)) // cFormSaleMain.DisplayItem(1, false); //else //{ // RegisterFlavourMenu("FLAVOUR"); // 플레이버 화면 표시 // cFormSaleMain.DisplayItem(0, false); //} return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 강제 부가메뉴 등록 처리 /// /// public bool RegisterForceSubMenu() { bool bRet = false; try { if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.ETC.LOSS) return false; if (m_cTrnStatus.Sale.SubMenuPopUpYn != "1") return false; if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET) { // 상품 아이템 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // 상품 정보 int nSelRow = alPluItem.Count - 1; Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow]; if ((cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)) // 부가메뉴 포함 여부 { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 강제 부가메뉴 화면 표시 if (cFormSaleMain.LoadSubMenuDisplay(cPluItem.SUB_SHOP_CD, cPluItem.M_CLSS) == true) { if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET) m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET_OPT; else m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_OPT; //20160911 SBSEO 추가 부가 메뉴일때도 부모코드 입력! m_cTrnStatus.Sale.SubMenuMainCode = cPluItem.ITEM_PLU_CD; } } } //else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT) //{ // m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET; //} 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 bRet; } /// /// 세트메뉴 등록 처리 /// /// public bool RegisterSetMenu() { bool bRet = false; try { if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING) { // 상품 아이템 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // 상품 정보 int nSelRow = alPluItem.Count - 1; Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow]; if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN) { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 세트메뉴 그룹 로딩 m_dtSetMenuGroup = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_SET.TABLE_NAME, cPluItem.SUB_SHOP_CD, cPluItem.ITEM_PLU_CD); if (m_dtSetMenuGroup == null || m_dtSetMenuGroup.Rows.Count <= 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0028); // 세트 상품 마스터가 없습니다 return false; } // 세트메뉴 그룹 상세 로딩 m_dtSetMenuDetail = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_SET_GRP.TABLE_NAME, cPluItem.SUB_SHOP_CD, cPluItem.ITEM_PLU_CD); m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET; m_cTrnStatus.Sale.SetPluGroupPos = 0; m_cTrnStatus.Sale.SetPluGroupCnt = 0; m_cTrnStatus.Sale.SetPluSetMainCode = cPluItem.ITEM_PLU_CD; } } // 세트 상품 등록 처리 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET) { for (int z = 0; z < 100; z++) // 마스터 이상으로 인한 무한루프 방지 { if (m_cTrnStatus.Sale.SetPluGroupPos >= m_dtSetMenuGroup.Rows.Count) { m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; m_cTrnStatus.Sale.SetPluGroupPos = 0; return true; } DataRow dr = m_dtSetMenuGroup.Rows[(int)m_cTrnStatus.Sale.SetPluGroupPos]; m_cTrnStatus.Sale.SetPluGroupCnt = m_cTrnStatus.Sale.SetPluGroupCnt + 1; if (m_cTrnStatus.Sale.SetPluGroupCnt >= CmUtil.GetDataRowLong(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_QTY)) { m_cTrnStatus.Sale.SetPluGroupPos = m_cTrnStatus.Sale.SetPluGroupPos + 1; m_cTrnStatus.Sale.SetPluGroupCnt = 0; } // 자식상품구분 ==> 0:상품, 1:부가상품그룹코드, 2:상품+그룹 if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_DIV) == "0") { m_cTrnStatus.Sale.SetPluUpSalePrc = 0; m_cTrnStatus.Sale.SetPluSetGroupCode = ""; // 상품 등록 처리 RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SUB_STOR_CD), 10) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD), ""); } else if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_DIV) == "1") { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 세트메뉴 화면 표시 if (cFormSaleMain.LoadSetMenuDisplay( CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD), CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_GRPNM)) == false) { continue; } m_cTrnStatus.Sale.SetPluSetGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD); } else if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_DIV) == "2") { m_cTrnStatus.Sale.SetPluUpSalePrc = 0; m_cTrnStatus.Sale.SetPluSetGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_GRP_CD); // 상품 등록 처리 RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SUB_STOR_CD), 10) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD), ""); } break; } } 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); m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; m_cTrnStatus.Sale.SetPluGroupPos = 0; } return bRet; } /// /// 선택 부가메뉴 등록 처리 /// /// public bool RegisterChoiceSubMenu(string sSelRow) { bool bRet = false; try { if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.ETC.LOSS && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG) return true; if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING) return false; // 상품 아이템 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelRow)]; if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다 return false; } if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027); // 주문완료 후 변경 할 수 없습니다 return false; } if ((cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0026); // 부가메뉴를 등록 할 수 없는 상품입니다 return false; } // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 부가메뉴 화면 표시 bRet = cFormSaleMain.LoadSubMenuDisplay(cPluItem.SUB_SHOP_CD, cPluItem.M_CLSS); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 플레이버 등록 처리 /// /// 선택행 /// public bool RegisterFlavourMenu(string sSelRow) { bool bRet = false; try { if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.ETC.LOSS) return false; if (sSelRow != "") { // 상품 아이템 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[alPluItem.Count - 1]; if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING && cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR_OWN) { if (cPluItem.FLAVOUR_QTY <= 2) { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 플레이버 화면 표시 cFormSaleMain.LoadFlavourMaster(m_cTrnStatus.Sale.SubStoreCode); } } else { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.LoadFlavourMaster(""); } } else { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 플레이버 화면 표시 cFormSaleMain.LoadFlavourMaster(m_cTrnStatus.Sale.SubStoreCode); } 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 bRet; } /// /// 지정 취소 처리 /// /// 선택행 /// public bool CancelPluItem(string sSelRow) { bool bRet = false; try { //17.05.18 dkshin 쇼킹박스 추가 //if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.LOG.SHOCKING_BOX) //if (m_cTrnStatus.Head.ShockingBoxStat == "1") //{ // WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0698)); // return bRet; //} //// 판매화면 //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 지정취소 처리 string nStat = m_cPluService.SetCancelItem(sSelRow); if (nStat != UserCom.RST_OK) return false; ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count <= 0) { //#20170828 해피포인트 적립 제외 버튼 추가 phj, start //선택된 상품이 모두 취소 되었을 때 0으로 초기화 m_cTrnStatus.Head.HP_EXCLUDE_YN = "0"; //#20170828 해피포인트 적립 제외 버튼 추가 phj, end // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; //cFormSaleMain.DisplayInit(false, true); } // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) //cFormSaleMain.DisplayItem(1, false); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 수량변경 처리 /// /// 선택행 /// public bool QtyChangePluItem(string sMenuKey, string sSelRow, string sNewQty) { bool bRet = false; try { // 판매 화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 상품 아이템 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // 상품 정보 int nSelRow = CmUtil.IntParse(sSelRow); Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow]; switch (sMenuKey) { case PosKey.MENU_KEY.QTY_PLUS: sNewQty = (cPluItem.SALE_QTY + 1).ToString(); break; case PosKey.MENU_KEY.QTY_MINUS: sNewQty = (cPluItem.SALE_QTY - 1).ToString(); break; } // 수량변경 처리 string nStat = m_cPluService.SetQtyChangeItem(sSelRow, sNewQty); if (nStat != UserCom.RST_OK) return false; // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(1, false); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 결제 등록 처리 /// /// /// /// public bool RegisterPayment(string sMenuKey, string sInPutData) { bool bRet = false; try { //#20181016 메모리 사용량 로그남기기 start //20181108 주석처리 //m_cDataCommon.MemoryCheckLog(); //#20181016 메모리 사용량 로그남기기 end m_cPosStatus.Sale.ScreenSaverTime = ""; //화면보호기 대기시간 설정 //if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING) return false; if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING && m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.PAY_WAIT) return false; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start if (m_cTrnStatus.Head.ShockingBoxStat == "1" && m_cTrnStatus.Head.ShockingBoxTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX) { WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054)); return bRet; } //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end // 선불 판매 일때 고객 이름 체크 하기! (중국인 경우 제외) if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID && PosMstManager.GetPosOption(POS_OPTION.OPT046) != "1") { if (m_cTrnStatus.Head.PpCardCustNm == "") { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_PREPAID_CUST }); if (sRet != UserCom.RST_OK) { return false; } } } // 상품 등록 여부 체크 bool bSaleItemExist = false; ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA cPluItem in aSaleItem) { if (cPluItem.CANCEL_DIV != PosConst.CANCEL_DIV.CANCEL && cPluItem.CANCEL_DIV_MAIN != PosConst.CANCEL_DIV.CANCEL) { bSaleItemExist = true; break; } } if (bSaleItemExist == false) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0396); return false; } // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } // 예약 완료 거래시에는 적용 하지 말자! if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) { // 상품 할인 및 사은품 캠페인 처리 ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaignMain.ExecuteCampaignPluHappyPoint("", true, PosConst.SALE_PLU_INPUT_TYPE.FREEGIFT, "", "", ""); // 상품 캠페인 계산 } m_cTrnStatus.Sale.SubTotalCancelDiv = true; //결제 전후 취소 처리 체크 플래그 //결제 고객 등록 체크 SetPayGuest("1"); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT; //낱개 반품 이나 판매 로스 일경우 결제 버튼 클릭시 현금 자동 결제 2016-12-05 문성진대리 요청 사항! if ((m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) || (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { #region //현금 처리! IPaymentUs m_cPaymentUs = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CASH); string sRet = ""; if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) { //낱개반품 sRet = m_cPaymentUs.SetPayment(new string[] { m_cTrnStatus.Sale.RemainPayAmt.ToString(), "0" }); } else { //LOSS sRet = m_cPaymentUs.SetPayment(new string[] { "0", "0" }); } if (sRet != UserCom.RST_OK) { m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; return false; } CheckSaleComplete(); if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT) { // 결제 내역 받아 오기 ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); m_cPaymentUs.CancelPayment(new string[] { (alPayItem.Count - 1).ToString() }); m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; return false; } #endregion return true; } //중국일때 Take In/Out 선택! if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT304), "1") == "1") { SetChinaTakeInOut(); } //2018.01.25.002;미국 서부(남가주, 북가주) 일 경우 Take In/Out 사용 처리;girak.kim;Start else if( m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS) && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT304), "1") == "1" && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT330), "1") == "1" //&& (m_cPosStatus.Base.BrandCd.ToUpper().Equals(PosConst.MST_BRAND_CODE.PC_UC) || m_cPosStatus.Base.BrandCd.ToUpper().Equals(PosConst.MST_BRAND_CODE.PC_US)) ) { SetUSTakeInOut();//Take In/Out 결과 상관 없이 무조건 결제창은 띄움 } //2018.01.25.002;미국 서부(남가주, 북가주) 일 경우 Take In/Out 사용 처리;girak.kim;End //KDS 부가 정보 사용 여부 [고객명/VIP 구분](0:사용안함, 1:사용함) - 쒝쒝버거용 if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT027), "0") == "1") { SetKdsData(); } //#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 start #region 제조음료 Take In/Out 설정 기능 //정상 판매인 경우에만 동작 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) { //제조음료 포함 여부 체크 bool bProdTakeInOutItemYN = false; bProdTakeInOutItemYN = ChkProdItemTakeInOutYN(); //제조음료 Take In/Out 사용여부 체크(ini에 설정이 안된 경우 공통코드 체크) bool bProdTakeInOutUse = false; bProdTakeInOutUse = ChkProdItemTakeInUse(); //제조음료 Take In/Out 선택 창 표시 if (bProdTakeInOutItemYN == true && bProdTakeInOutUse == true) { SetProdTakeInOut(); } } #endregion 제조음료 Take In/Out 설정 기능 //#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 end // 판매화면(상품등록=>결제대기) IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.ChangeSalePayMode(false); cFormSaleMain.ChangeShowPayBtn(false); if (sMenuKey != "") PayMainProc(sMenuKey, sInPutData); cFormSaleMain.SetTopMot(PosKey.MENU_KEY.PAY_MAIN_MENU); if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT) cFormSaleMain.ChangeShowPayBtn(true); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } finally { m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss"); //화면보호기 대기시간 설정 } return bRet; } /// /// 중국 Take In/Out 일괄 설정(중국) /// private void SetChinaTakeInOut() { try { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ETC_SELECT_BTN, PosKey.MENU_KEY.TAKE_IN_OUT, "" }); if (sRet == "1") //TAKE IN { SetItemTakeInOutAll("0"); } else if (sRet == "2") //TAKE OUT { SetItemTakeInOutAll("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); } } private bool SetUSTakeInOut() { bool bRet = false; bRet = SetTakeInOut(); return bRet; } /// /// Take In/Out 메세지 상품 일괄 적용(중국) /// /// private void SetItemTakeInOutAll(string sTakeInOut) { try { // 상품정보 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) { continue; // 지정취소 } else { // 상품 마스터 조회 DataTable dtDataInfo = m_cDataCommon.SearchItemCode(cSaleItem.SUB_SHOP_CD, cSaleItem.ITEM_PLU_CD, ""); if (dtDataInfo == null || dtDataInfo.Rows.Count == 0) { //스킵!! } else { cSaleItem.TAKE_IN_OUT_DIV = sTakeInOut; DataRow drPlu = dtDataInfo.Rows[0]; if (cSaleItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_IN) { cSaleItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT); //#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 start //cSaleItem.TAXRATE_CD = cSaleItem.ITEM_TAKE_IN_VAT_CD; //#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 end } else { cSaleItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT); //#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 start //cSaleItem.TAXRATE_CD = cSaleItem.ITEM_TAKE_OUT_VAT_CD; //#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 end } cSaleItem.SALE_AMT = CmUtil.DoubleMultiplication(cSaleItem.SALE_PRC, cSaleItem.SALE_QTY); } } } m_cPluService.ItemAmountExeccute(true, true); IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayItem(1, false); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// KDS 부가 정보 사용 - 쒝쒝버거용 /// private void SetKdsData() { try { string sMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0652), m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName); string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ETC_SELECT_BTN, PosKey.MENU_KEY.SET_KDS_DATA, sMsg }); string[] aRecvData = sRet.Split(new string[] { "|" }, StringSplitOptions.None); m_cTrnStatus.Head.PackTradeDiv = aRecvData[0]; m_cTrnStatus.Head.VipTy = aRecvData[1]; //#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 start /* if (m_cTrnStatus.Head.PackTradeDiv == "1") { SetItemTakeInOutAll("0"); } else if (m_cTrnStatus.Head.PackTradeDiv == "2") { SetItemTakeInOutAll("1"); } */ //#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 end } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 결제 고객 등록 /// public void SetPayGuest(string sChkFalg) { try { if (PosMstManager.GetPosOption(POS_OPTION.OPT004) == sChkFalg) { if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "1") //결제 고객 { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "PAY" }); if (sRet != UserCom.RST_ERR) { m_cTrnStatus.Head.PayGndrDiv = CmUtil.MidH(sRet, 0, 1); m_cTrnStatus.Head.PayAge = CmUtil.LongParse(CmUtil.MidH(sRet, 1, 2)); } } else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "2") //고객수 { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "" }); } else { //미사용 } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 단품 아이템 할인 적용 /// /// /// /// public bool RegisterItemDc(string sFuncKey, string sSelRow, string InData) { bool bRet = false; try { //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start if (m_cTrnStatus.Head.ShockingBoxStat == "1" && m_cTrnStatus.Head.ShockingBoxTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX) { WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054)); return bRet; } //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end // 판매 화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); string sDcType = string.Empty; string sDcCode = string.Empty; if (sFuncKey == PosKey.MENU_KEY.ELOVE_DC) { //환경사랑DC만 단독 처리로 분리 if (EnvironmentLoveCheck(sSelRow) == false) return false; } else { // 중복 불가 체크! //if (m_cDataCommon.PayDcDuplicationCheck(sFuncKey) == false) return false; switch (sFuncKey) { case PosKey.MENU_KEY.ITEM_DC_AMT: //임의 할인 금액 sDcType = PosConst.ITEM_DC_DIV_POS_DC.AMT; sDcCode = ItemConst.PLU_DC_DIV.POS_DC; // ItemConst.TR_ITEM_ID.USER_DC.RANDOMLY; break; case PosKey.MENU_KEY.ITEM_DC_RATE: //임의 할인 율 sDcType = PosConst.ITEM_DC_DIV_POS_DC.RATE; sDcCode = ItemConst.PLU_DC_DIV.POS_DC; //ItemConst.TR_ITEM_ID.USER_DC.RANDOMLY; break; case PosKey.MENU_KEY.FREE_DC: //서비스 sDcType = PosConst.ITEM_DC_DIV_POS_DC.FREE; sDcCode = ItemConst.PLU_DC_DIV.FREE; //ItemConst.TR_ITEM_ID.USER_DC.SERVICE; break; case PosKey.MENU_KEY.IN_EMP_DC: //입점 건물 직원 할인 // 화면 호출 //입력 값 확인 - 없으면 RETURN sDcType = PosConst.ITEM_DC_DIV_POS_DC.RATE; sDcCode = ItemConst.PLU_DC_DIV.IN_EMP_DC; // ItemConst.TR_ITEM_ID.USER_DC.IN_EMP_DC; break; case PosKey.MENU_KEY.ITEM_CHAGE_CPN: //제품교환권 sDcType = PosConst.ITEM_DC_DIV_POS_DC.FREE; sDcCode = ItemConst.PLU_DC_DIV.ITEM_CHAGE_CPN_DC; //ItemConst.TR_ITEM_ID.USER_DC.ITEM_CHAGE_CPN; break; //case PosKey.MENU_KEY.ELOVE_DC: //환경사랑DC // if (EnvironmentLoveCheck(ref sSelRow, ref InData) == false) // return false; // else // return true; ////sDcType = PosConst.ITEM_DC_DIV_POS_DC.AMT; ////sDcCode = ItemConst.TR_ITEM_ID.USER_DC.ELOVE; ////break; } // 상품할인 처리 string nStat = m_cPluService.SetDcItem(sSelRow, sDcType, sDcCode, InData); if (nStat != UserCom.RST_OK) return false; } // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(1, false); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } //#Rhee, 20180130 단품 할인 전체 취소 추가 Start /// /// 단품 아이템 할인 적용 전체 취소 /// /// /// /// /// public bool RegisterItemDcCancel(string sFuncKey, string sDcDiv, string sDcType) { bool bRet = false; try { // 판매 화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 상품할인 처리 string nStat = m_cPluService.SetDcCancelItem(sDcDiv, sDcType); if (nStat != UserCom.RST_OK) return false; // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(1, false); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } //#Rhee, 20180130 단품 할인 전체 취소 추가 End /// /// 환경사랑DC 체크 /// /// /// /// private bool EnvironmentLoveCheck(string sSelRow) { bool bRet = false, bAlready = false; double dDcAmt = 0; //string m_DC_ELOVE = ItemConst.TR_ITEM_ID.USER_DC_ITEM + ItemConst.TR_ITEM_ID.USER_DC.ELOVE; Column.TR_PLU.DATA cPluItem = null; try { long lInPutQty = 0; //int nSelRow = 0; //// Step 1.마지막 아이템 체크 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); //for (int iRow = 0; iRow < alPluItem.Count; iRow++) //{ // cPluItem = (Column.TR_PLU.DATA)alPluItem[iRow]; // if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.EXCEP_DC_DIV == m_DC_ELOVE) // { // bAlready = true; // break; // } //} // 동일 할인 체크 cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelRow)]; if (cPluItem.EXCEP_DC_DIV == ItemConst.PLU_DC_DIV.ELOVE_DC) bAlready = true; if (bAlready == true) { if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0053) == false) // 등록된 할인을 취소 하시겠습니까? return bRet; dDcAmt = 0; } else { //마지막 강제 셋팅 - 오페이션이 바끼면(마지막처리아니면) 주석으로 처리해야함! //nSelRow = alPluItem.Count - 1; //sSelRow = nSelRow.ToString(); //cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow]; // 취소 상품은 할인 불가 if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다 return bRet; } //// 세트 자식은 할인 불가 //if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_MAIN) //{ // WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0050); // 할인 적용 불가능한 상품 입니다. // return bRet; //} // 할인 허용 여부 if (cPluItem.DC_PRMT_YN == "1" || cPluItem.FREE_GIFT_YN == "1" || cPluItem.SALE_PRC == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0050); // 할인 적용 불가능한 상품 입니다. return bRet; } // 할인 등록 여부 체크 if (m_cDataService.GetPluDiscountAmount(false, false, false, false, false, false, false, false, true, CmUtil.IntParse(sSelRow)) > 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0063); // 기존 할인 취소 후 등록 하세요. return bRet; } // Step 3.수량 체크 -> 1 이상이면 입력 받는 화면 호출 if (cPluItem.SALE_QTY > 1) { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, "ELOVE" }); if (sRet == UserCom.RST_ERR) { return bRet; } lInPutQty = CmUtil.LongParse(sRet); } else { lInPutQty = cPluItem.SALE_QTY; } // Step 4.입력수량과 현재 등록 수량 체크 크면 에러 if (cPluItem.SALE_QTY < lInPutQty || lInPutQty == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0075); return bRet; } //적용 대상 금액 체크 if (cPluItem.BILL_AMT == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0601); //할인 적용 대상 금액이 없습니다. return bRet; } // Step 5.할인 금액 가져오기 DataTable dt = m_cMstPayDcService.Select(new string[] { PosMst.MST_PAY_DC.TABLE_NAME, ItemConst.TR_ITEM_ID.USER_DC_ITEM, ItemConst.TR_ITEM_ID.USER_DC.ELOVE }); if (dt == null || dt.Rows.Count <= 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0377); // 할인 정보 마스터가 없습니다. 관리자에 문의 하세요. return bRet; } foreach (DataRow dr in dt.Rows) { //할인 방법 DC_APPLY_TRGT //적용 대상 PAY_DC_METHD 1:율, 2:금액 //적용 금액 PAY_DC_VAL string sAppyTrgt = CmUtil.GetDataRowStr(dr, PosMst.MST_PAY_DC.DATA.DC_APPLY_TRGT); string sDcMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_PAY_DC.DATA.PAY_DC_METHD); double dPayDcVal = CmUtil.GetDataRowDouble(dr, PosMst.MST_PAY_DC.DATA.PAY_DC_VAL); if (sDcMethd == "1") { double dtmp = CmUtil.MathRounds(CmUtil.MathAmtPercent(cPluItem.SALE_AMT, dPayDcVal), m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc)); dDcAmt = CmUtil.DoubleMultiplication(dtmp, lInPutQty); } else { dDcAmt = CmUtil.DoubleMultiplication(dPayDcVal, lInPutQty); } break; } } if (cPluItem.BILL_AMT < dDcAmt) { string sMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0602), cPluItem.BILL_AMT, dDcAmt); WinManager.ErrorMessage(sMsg); //할인 적용 대상 금액이 없습니다. return bRet; } cPluItem.EXCEP_DC_AMT = dDcAmt; cPluItem.EXCEP_DC_DIV = dDcAmt > 0 ? ItemConst.PLU_DC_DIV.ELOVE_DC : "0000"; m_cDataService.UpdatePluItemAmount(cPluItem); // 상품 판매가 계산 m_cPluService.ItemAmountExeccute(true, true); bRet = 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 bRet; } /// /// 상품권 판매 /// /// public bool RegisterSellGift(string sFuncKey) { bool bRet = false; try { // 상품권, 선불 카드 셋팅 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) { string sTableName = string.Empty; string sItemType = string.Empty; string sItemName = string.Empty; if (sFuncKey == PosKey.MENU_KEY.GIFT_SALE) { sTableName = PosMst.MST_GIFT_PREPAID.TABLE_NAME_GIFT; sItemType = PosConst.ITEM_TYPE.GIFT; sItemName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0083); } else { sTableName = PosMst.MST_GIFT_PREPAID.TABLE_NAME_PREPAID; sItemType = PosConst.ITEM_TYPE.PREPAID; sItemName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0095); } m_dtSetMenuDetail = null; // 선불카드 판매 - 중국 (별도 입력 처리) if (PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1") { } else { //대상 조회 m_dtSetMenuDetail = m_cPluService.SearchMenuMaster(sTableName, "", sItemType); if (m_dtSetMenuDetail == null || m_dtSetMenuDetail.Rows.Count == 0) { // 등록 할 수 있는 상품권/선불카드가 없습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0304); return bRet; } } //m_cTrnStatus.Sale.SetPluGroupPos = 0; //메뉴 화면 표시 // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.LoadSetMenuDisplay(sFuncKey, sItemName, true); //현재 상태 변경, 거래모드 변경 if (sItemType == PosConst.ITEM_TYPE.GIFT) { //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_GIFT; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.CHARGESALE.GIFT; } else { //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_PREPAID; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.CHARGESALE.PREPAID; } //선불카드 판매일경우 카드 번호 입력 로직 필요! if (PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1") { // 선불카드 판매 - 중국 frmSalePreCard_China fForm = (frmSalePreCard_China)FormManager.GetForm(FormManager.FORM_SALE_PRECARD); if (fForm == null) { fForm = new frmSalePreCard_China(); FormManager.AddForm(FormManager.FORM_SALE_PRECARD, fForm); } if (fForm.ShowDialog() != DialogResult.OK) { TradeStop(); return false; } DataTable dtPreCard = fForm.GetPripadItem; if (dtPreCard != null && dtPreCard.Rows.Count > 0) { foreach (DataRow dr in dtPreCard.Rows) { // 상품 등록 처리 if (RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(m_cPosStatus.Base.StoreNo, 10) + CmUtil.GetDataRowStr(dr, "iTemCD"), CmUtil.GetDataRowStr(dr, "CardNo")) == true) { // 선불카드권종 추가(2017.06.27) ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[alPluItem.Count - 1]; cPluItem.SLACK_FIELD = CmUtil.GetDataRowStr(dr, "PreKind"); } //RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(m_cPosStatus.Base.StoreNo, 10) + CmUtil.GetDataRowStr(dr, "iTemCD"), CmUtil.GetDataRowStr(dr, "CardNo")); } } } } 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 bRet; } /// /// 거래 취소 /// /// private bool TradeStop() { string sRet = UserCom.RST_ERR; try { //// 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT) { // 거래 취소 확인 메세지! if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0261)) == true) { // 선불카드 판매 - 중국인 경우 if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID && PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1") { // 취소요청 IPaymentUs m_cSalePreCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALEPRECARD); ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA cPluItem in alPluItem) { if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.PREPAID) { if (cPluItem.CANCEL_DIV != "1") { // 취소 요청 sRet = m_cSalePreCard.CancelPayment(new string[] { "1", cPluItem.SALE_GIFT_NO, "0" }); if (sRet != UserCom.RST_OK) { return false; } } if (cPluItem.CANCEL_DIV != "1") { cPluItem.CANCEL_DIV = "1"; cPluItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss"); } } } } // 원거래 종류 백업 m_cTrnStatus.Head.OrgTradeKind = m_cTrnStatus.Head.TradeKind; //상품권 or 선불카드 승인 내역 확인 및 취소 처리 로직 필요! m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.STOP; // 보류 후 거래 중지라면 로그 남기기! if (m_cTrnStatus.Head.HoldStat != "") m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.CANCEL; //17.05.18 dkshin 쇼킹박스 추가 //쇼킹상품 취소 처리 로직 필요! if (m_cTrnStatus.Head.ShockingBoxStat == "1") { IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL); //m_cHoldDeal.UpdateHoldDeal(m_cTrnStatus.Head.SaleDate, m_cTrnStatus.Head.PosNo, m_cTrnStatus.Head.RegNo, "0", 0, 0); m_cHoldDeal.UpdateShockingBOX(); m_cTrnStatus.Head.ShockingBoxStat = "0"; } // 테이블 거래 완료 처리 sRet = m_cTableSvr.CompleteSaleOrder(); // 거래 완료 처리 sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return false; // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; } else { return false; } //// 거래 완료 후 초기화 처리 cFormSaleMain.DisplayInit(true, true); //// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, true); } else { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL || m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE) { m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE; m_cTrnStatus.Head.NonSaleRsnCd = "0"; //// 거래 완료 후 초기화 처리 cFormSaleMain.DisplayInit(true, true); } } if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { cFormSaleMain.SaleMainExit(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } /// /// 거래 보류 /// /// private bool HoldDeal() { try { //정상 거래 인지 체크 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (aSaleItem.Count > 0) { // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } int iMaxCnt = CmUtil.IntParse(PosMstManager.GetPosOption(POS_OPTION.OPT017)); if (iMaxCnt > 0) { //거래 건수 체크 IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL); DataTable dt = m_cHoldDeal.SearchHoldDealList(m_cPosStatus.Base.SaleDate); if (dt == null || dt.Rows.Count == 0) { //처리 없음 } else { if (iMaxCnt < dt.Rows.Count) { // 보류로 가능 횟수가 초과 되었습니다. WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0637)); return false; } } } // 보류로 저장 하시겠습니까? if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0527) == true) { //ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); ////캠페인 초기화 //cCampaignMain.ClearCampaignAmt(); //m_cDataService.UpdatePluAmount(); //#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 start //기존 //m_cPluService.ItemDcAllClear(true); //변경 m_cPluService.ItemDcAllClear(true, false, false); //#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 end //보류 저장 m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.HOLD_DEAL; if (m_cTrnStatus.Head.HoldStat == ItemConst.HOLD_STAT_CD.LOAD) { m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.REHOLD; } else { m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.HOLD; } // 테이블 거래 완료 처리 string sRet = m_cTableSvr.CompleteSaleOrder(); // 거래 완료 처리 sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return false; // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 거래 완료 후 초기화 처리 cFormSaleMain.DisplayInit(true, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, true); } } else { // 보류 불러오기 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //거래 건수 체크 IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL); DataTable dt = m_cHoldDeal.SearchHoldDealList(m_cPosStatus.Base.SaleDate); if (dt == null || dt.Rows.Count == 0) { // 거래내역이 존재하지 않습니다. WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0269)); return false; } else if (dt.Rows.Count == 1) { // 내역 불러오기를 하시겠습니까? if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0254)) == true) { DataRow dr = dt.Rows[0]; m_cHoldDeal.LoadLocalTranPlu(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString()); m_cHoldDeal.UpdateHoldDeal(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString(), "1", 0, 0); m_cTrnStatus.Head.HoldOrgRegNo = dr["REG_NO"].ToString(); m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.LOAD; } else { return false; } } else { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_HOLD }); } // 상품 내역 불러오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count > 0) { Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[0]; if (CmUtil.LongParse(cPluItem.NONSALES_RSN_CD) != 0) // 로스거래 이면(비매출사유코드가 있으면) { // 비매출 사유명 설정 DataTable dtNoSaleRsnCd = m_cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.S0001, ""); foreach (Column.TR_PLU.DATA cLossPluItem in alPluItem) { if (dtNoSaleRsnCd != null && dtNoSaleRsnCd.Rows.Count > 0) { foreach (DataRow dr in dtNoSaleRsnCd.Rows) { if (cLossPluItem.NONSALES_RSN_CD == CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CMM_CD)) { cLossPluItem.NONSALES_RSN_NM = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CD_NM); m_cTrnStatus.Head.NonSaleRsnCd = cPluItem.NONSALES_RSN_CD; m_cTrnStatus.Head.LossTitle = cPluItem.NONSALES_RSN_NM; break; } } } } m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.ETC.LOSS; } // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } } } else { //판매 거래에서만 가능합니다. } } 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 true; } /// /// 낱개 반품 셋팅 /// /// private bool RegisterReturnItem() { bool bRet = false; try { // 낱개 반품 셋팅 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) { if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) //상품 등록되어 있지 않고 낱개 반품 다시 눌렀을때! 원복 { m_cTrnStatus.Head.RtnReasonCd = ""; // 선택된 사유코드 m_cTrnStatus.Head.RtnReasonMemo = ""; // 선택된 사유명 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE; } else { // 반품 사유코드 등록 frmSelReasonCode fForm = (frmSelReasonCode)FormManager.GetForm(FormManager.FORM_REASON_CODE); if (fForm == null) { fForm = new frmSelReasonCode(); FormManager.AddForm(FormManager.FORM_REASON_CODE, fForm); } fForm.ReasonGroup = PosConst.COMMON_CODE_GROUP.Z0008; // 사유 그룹코드 if (fForm.ShowDialog() != DialogResult.OK) { return false; } m_cTrnStatus.Head.RtnReasonCd = fForm.ReasonCode; // 선택된 사유코드 m_cTrnStatus.Head.RtnReasonMemo = fForm.ReasonName; // 선택된 사유명 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.REFUND; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE; } // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayInit(false, true); bRet = 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 bRet; } /// /// 상품 No Tax /// /// /// private bool ItemNoTax(string sSelRow) { bool bRet = false; try { // 판매 화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 상품할인 처리 string nStat = m_cPluService.SetNoTaxItem(sSelRow); if (nStat != UserCom.RST_OK) return false; // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(1, false); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } //#Rhee, 20180212 전체상품 No Tax 추가 Start /// /// 상품 No Tax /// /// private bool ItemAllNoTax() { bool bRet = false; try { // 판매 화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); string nStat = string.Empty; // 상품할인 처리 nStat = m_cPluService.SetAllNoTaxItem(); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(1, false); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } //#Rhee, 20180212 전체상품 No Tax 추가 End /// /// 판매로스 셋팅 /// /// private bool RegSaleLosss(string sSelRow) { bool bRet = false; try { // 판매LOSS 셋팅 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) { string sLossCode = string.Empty; sLossCode = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, PosKey.MENU_KEY.SALE_LOSS }); //코드 받아 오기 if (sLossCode != UserCom.RST_ERR) { string[] saRuleSplit = sLossCode.Split(new string[] { "~^(" }, StringSplitOptions.None); m_cTrnStatus.Head.NonSaleRsnCd = saRuleSplit[0]; if (CmUtil.LenH(saRuleSplit[1]) > 8) { m_cTrnStatus.Head.LossTitle = CmUtil.MidH(saRuleSplit[1], 0, 8).Trim(); } else { m_cTrnStatus.Head.LossTitle = saRuleSplit[1].Trim(); } m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.ETC.LOSS; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayInit(false, true); bRet = true; } } else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING) { //1. 로스거래인지 체크 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) { //2. 선택한 상품 체크 int nSelRow = CmUtil.IntParse(sSelRow); // 상품 내역 불러오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count > 0) { Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)alPluItem[nSelRow]; if (cItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) { //취소 건은 처리 없음! } else { //3. 폼을 호출 해서 코드 받고 string sLossCode = string.Empty; sLossCode = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, PosKey.MENU_KEY.SALE_LOSS }); //코드 받아 오기 if (sLossCode != UserCom.RST_ERR) { //4. 아이템에 저장 하고 string[] saRuleSplit = sLossCode.Split(new string[] { "~^(" }, StringSplitOptions.None); cItem.NONSALES_RSN_CD = saRuleSplit[0]; if (CmUtil.LenH(saRuleSplit[1]) > 8) { cItem.NONSALES_RSN_NM = CmUtil.MidH(saRuleSplit[1], 0, 8).Trim(); } else { cItem.NONSALES_RSN_NM = saRuleSplit[1].Trim(); } m_cTrnStatus.Head.NonSaleRsnCd = cItem.NONSALES_RSN_CD; m_cTrnStatus.Head.LossTitle = cItem.NONSALES_RSN_NM; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayItem(1, false); bRet = true; } //5. 완료 } } else { //등록된 상품이 없어 처리 할께 없다. } } else { // 로스거래가 아니므로 무시한다. } } else { // 처리 가능한 상태가 아님! } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } private bool OrderCompleted() { bool bRet = false; try { if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 테이블 판매모드 if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE) { if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT) { // 후불테이블의 일반판매모드 일때는 주문을 완료 할 수 없습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0054); return false; } // 모든 거래 데이터 삭제 m_cDataService.DeleteTranItem(); // 거래정보 초기화 m_cTrnStatus.ClearAll(); // 판매화면 종료 cFormSaleMain.SaleMainExit(); return true; } if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT) { bool bSaleAble = false; ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA cPluItem in alPluItem) { if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING || cPluItem.CANCEL_DIV != PosConst.CANCEL_DIV.CANCEL) { bSaleAble = true; break; } } if (bSaleAble == false) { // 모든 거래 데이터 삭제 m_cDataService.DeleteTranItem(); // 거래정보 초기화 m_cTrnStatus.ClearAll(); // 판매화면 종료 cFormSaleMain.SaleMainExit(); return true; } // 일괄취소 확인 var isTradeStop = true; foreach (Column.TR_PLU.DATA cPluItem in alPluItem) { if (cPluItem.CANCEL_DIV != PosConst.CANCEL_DIV.CANCEL && cPluItem.CANCEL_DIV_MAIN != PosConst.CANCEL_DIV.CANCEL) { isTradeStop = false; break; } } if (isTradeStop) { return this.TradeStop(); } if ((m_cTrnStatus.Head.TradeKind).Substring(0, 1) != ItemConst.TRAN_KIND.NORMAL.DELIMITER) { // 거래 완료 처리 } else { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return false; m_cTrnStatus.Sale.MenualOrderValue = string.Empty; SetPayGuest("4"); // Add, 2017.01.18 // 주방프린터 수동출력 처리 0:자동 1:수동(프린터선택) 2:수동(상품선택) MenualOrderKtchProcess(); // 주문내역 완료 처리 string sReturn = m_cTableSvr.CompleteMenuOrder(); if (sReturn != UserCom.RST_OK) { if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0088)) == false) return false; } // 모든 거래 데이터 삭제 m_cDataService.DeleteTranItem(); // 거래정보 초기화 m_cTrnStatus.ClearAll(); // 판매화면 종료 cFormSaleMain.SaleMainExit(); } bRet = 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 bRet; } /// /// 주문 종료(거래 저장없이 주문완료) /// /// private bool OrderCancelExit() { bool bRet = false; try { if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT) return false; // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA cPluItem in alPluItem) { if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_ING || cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD) { if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0675) == false) return false; break; } } // 모든 거래 데이터 삭제 m_cDataService.DeleteTranItem(); // 거래정보 초기화 m_cTrnStatus.ClearAll(); // 판매화면 종료 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.SaleMainExit(); 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 bRet; } private bool HappyOrderWeb() { bool bRet = false; try { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_WEB_HAPPY_ORDER, PosKey.MENU_KEY.WEB_HP_ORD }); if (sRet == UserCom.RST_OK) { bRet = 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 bRet; } private bool HappyOrder() { bool bRet = false; try { string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01" }); if (sRet == UserCom.RST_OK) { // 거래 초기화 m_cDataService.InitTranHeader(); // 판매중 모드 설정 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.FORIGN.O2O; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayInit(true, false); // 상품등록 내역 표시 cFormSaleMain.DisplayItem(0, false); bRet = 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 bRet; } private bool ItemMmeo(bool bIsFireKey) { bool bRet = false; try { // 후불에서만 사용 가능 if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.PRE_PAYMENT) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0631); return bRet; } // 주방프린트 사용(0 : 미사용, 1 : 사용) if (PosMstManager.GetPosOption(POS_OPTION.OPT506) != "1") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0414); return bRet; } // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); int iSelectedRow = cFormSaleMain.GetSelectedIndexOnSaleItemGrid(); ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alSaleItem[iSelectedRow]; // 취소상품 메모 불가 if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); return bRet; } // 부가메뉴는 메모 불가 if (cPluItem.SUBPRC_MENU_KEY_DIV != "0") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0665); return bRet; } // 출력대상 상품 확인 var cnt = m_cTableSvr.GetKtchDiveceCount(cPluItem.ORDER_OK_FLAG, m_cPosStatus.Sale.SelectFloorCd, m_cPosStatus.Sale.SelectTableNo, cPluItem.SUB_SHOP_CD + cPluItem.ITEM_PLU_CD); if (cnt <= 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0666); return bRet; } // FIRE KEY는 한번에 하나씩만.. if (bIsFireKey) { if (cPluItem.ITEM_MEMO_1 == "FIRE KEY") return true; } //string sRet = WinTable.ShowForm(new string[] { FormManager.FORM_ETC_TABLE_MEMO, (bIsFireKey == false ? "1" : "9"), iSelectedRow.ToString() }); string msgId = bIsFireKey == false ? PosConst.KPS_ORD_MSG_ID.ITEM_MEMO : PosConst.KPS_ORD_MSG_ID.FIRE_KEY; string sRet = WinTable.ShowForm(new string[] { FormManager.FORM_ETC_TABLE_MEMO, msgId, iSelectedRow.ToString() }); if (sRet == UserCom.RST_OK) { bRet = true; if (bIsFireKey) { //ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)alSaleItem[iSelectedRow]; cSaleItem.FIRE_KEY = true; } cFormSaleMain.DisplayItem(1, false); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 세트메뉴 상품 변경 처리 /// /// 선택행 /// public bool SetMenuItemChange(string sSelRow) { bool bRet = false; try { // 상품 아이템 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // 상품 정보 int nSelRow = CmUtil.IntParse(sSelRow); Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow]; // 취소 상품은 변경 불가 if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); return false; } if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027); return false; } if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0307); return false; } if (cPluItem.SET_PLU_SET_GROUP_CODE == "") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0307); return false; } // 세트메뉴 상품 변경 등록 frmSetMenuChg fForm = (frmSetMenuChg)FormManager.GetForm(FormManager.FORM_SET_MENU_CHANGE); if (fForm == null) { fForm = new frmSetMenuChg(); FormManager.AddForm(FormManager.FORM_SET_MENU_CHANGE, fForm); } fForm.SetSelectRow = sSelRow; if (fForm.ShowDialog() == DialogResult.OK) { // 판매 화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(1, false); } return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } #region 주석 ///// ///// ///// ///// //public bool PayDcDuplicationCheck(string sPayGrpCode, string sPayCode) //{ // bool bRet = true; // try // { // int iCpn = 1; //할인(캠페인) // int iDcTelecom = 1; //할인(통신사) // int iDcPnt = 1; //할인(포인트) // int iDcCpn = 1; //할인(쿠폰) // int iDcEmp = 1; //할인(직원) // int iDcUser = 1; //할인(임의) // int iPayNrl = 1; //결제(일반) // int iPayMobile = 1; //결제(모바일) // int iPayPnt = 1; //결제(포인트) // int[,] aCheckPoint = new int[9, 2]; // for (int iRow = 0; iRow < aCheckPoint.GetLength(0) ; iRow++) // { // aCheckPoint[iRow, 0] = 1; // aCheckPoint[iRow, 1] = 0; // } // ///////////////////////////////////// // // 할인 // ///////////////////////////////////// // //캠페인 // ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // for (int iRow = 0; iRow < alPluItem.Count; iRow++) // { // Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[iRow]; // if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL) // { // if (cPluItem.CPN_DC_AMT > 0) // { // //aCheckPoint[0, 0] = 0; // aCheckPoint[0, 1] = 1; //있음! // } // if (cPluItem.ITEM_DC_AMT > 0) // { // if(sPayGrpCode == ItemConst.TR_ITEM_ID.USER_DC_ITEM) // { // //같은 그룹에 결제/할인 수단이 등록되어 있어 처리 할 수 없습니다. // return false; // } // aCheckPoint[1, 0] = 0; // aCheckPoint[1, 1] = 1; //있음! // } // } // } // //할인 체크 // ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // StringBuilder sbSQL = new StringBuilder(); // sbSQL.Length=0; // for (int iRow = 0; alPayItem.Count > iRow; iRow++) // { // Column.TR_PAYMENT.DATA clPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow]; // if(clPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL) // { // if(clPayItem.PAY_WAY_CD == sPayGrpCode) // { // //같은 그룹에 결제/할인 수단이 등록되어 있어 처리 할 수 없습니다. // return false; // } // else // { // if(sbSQL.Length == 0 ) // { // sbSQL.Append("'"); // } // else // { // sbSQL.Append(",'"); // } // sbSQL.Append(clPayItem.PAY_WAY_CD); // sbSQL.Append(clPayItem.PAY_DTL_CD_01); // sbSQL.Append("'"); // //등록 된 자기 자신 등록 유무 넣기 // switch (sPayGrpCode) // { // case ItemConst.TR_ITEM_ID.PAY_ITEM: // case ItemConst.TR_ITEM_ID.CASH_ITEM: // case ItemConst.TR_ITEM_ID.CHECK_ITEM: // case ItemConst.TR_ITEM_ID.CREDIT_ITEM: // case ItemConst.TR_ITEM_ID.CREDITCARD_ITEM: // case ItemConst.TR_ITEM_ID.EMP_PAY_ITEM: // case ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM: // case ItemConst.TR_ITEM_ID.GIFT_ITEM: // case ItemConst.TR_ITEM_ID.MOBILECASH_ITEM: // case ItemConst.TR_ITEM_ID.MOBILECON_ITEM: // case ItemConst.TR_ITEM_ID.PAYETC_ITEM: // case ItemConst.TR_ITEM_ID.POINT_ITEM: // case ItemConst.TR_ITEM_ID.PPCARD_ITEM: // case ItemConst.TR_ITEM_ID.RESERVATION_ITEM: // { // break; // } // case ItemConst.TR_ITEM_ID.COUPON_ITEM: // { // aCheckPoint[4, 1] = 1; //있음! // break; // } // case ItemConst.TR_ITEM_ID.MOBILE_COM_POINT: // { // aCheckPoint[2, 1] = 1; //있음! // break; // } // case ItemConst.TR_ITEM_ID.EMP_DC_ITEM: // { // aCheckPoint[5, 1] = 1; //있음! // break; // } // } // } // } // } // DataTable dt = m_cMstPayDcService.Select(new string[] { PosMst.MST_PAY_DC.TABLE_NAME_GROUPBY, sbSQL.ToString(), PosConst.PAY_DC_TYPE.DC }); // if(dt == null || dt.Rows.Count <= 0) // { // //내역 없음! // } // else // { // foreach (DataRow dr in dt.Rows) // { // //할인 // aCheckPoint[0, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.CPI_DUP_YN); // aCheckPoint[1, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_GNRL_DUP_YN); // aCheckPoint[2, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_TELECOM_DUP_YN); // aCheckPoint[3, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_POINT_DUP_YN); // aCheckPoint[4, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_CPN_DUP_YN); // aCheckPoint[5, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_EMP_DC_DUP_YN); // //결제 // aCheckPoint[6, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_GNRL_DUP_YN); // aCheckPoint[7, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_MOBILE_DUP_YN); // aCheckPoint[8, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_POINT_DUP_YN); // break; // } // } // if (sPayGrpCode == "" && sPayCode == "") // { // //두개 코드가 공백이면 캠페인 경우이고 캠페인 중복 가능 여부만 체크 하면됨! // if (aCheckPoint[0, 0] != 1) // bRet = false; // else // bRet = true; // } // else // { // //캠페인 외 중복 체크 // dt = m_cMstPayDcService.Select(new string[] { PosMst.MST_PAY_DC.TABLE_NAME_GROUPBY, sPayGrpCode, sPayCode }); // //현재 등록 결제 수단과 등록된 결제 중복 체크 로직! // if (dt == null || dt.Rows.Count <= 0) // { // //등록 정보 없음 // return false; // } // else // { // foreach (DataRow dr in dt.Rows) // { // //할인 // if (CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_TELECOM_DUP_YN) == 1 && aCheckPoint[2, 0] == 1) // { // //통신사 중복!! // } // iDcPnt = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_POINT_DUP_YN); // iDcCpn = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_CPN_DUP_YN); // iDcEmp = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_EMP_DC_DUP_YN); // //결제 // iPayNrl = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_GNRL_DUP_YN); // iPayMobile = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_MOBILE_DUP_YN); // iPayPnt = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_POINT_DUP_YN); // break; // } // } // } // } // catch (Exception ex) // { // WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); // } // return bRet; //} #endregion //#20171227 인천공항 포스연동 start, phj #region 인천공항 데이터 전송!!!! private void IncheonAireport(string sMenuKey) { if (PosMstManager.GetPosOption(POS_OPTION.OPT512) != "1") { WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0765); return; } string sRet = UserCom.RST_ERR; try { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "IncheonAirport Button Click Start "); //#20171227 인천공항 포스연동 start, phj - #20180313 //기존 //if (m_cAirPortTran.IncheonAireportClose(sMenuKey, "Y") == UserCom.RST_OK) //변경 sRet = m_cAirPortTran.IncheonAireportClose(sMenuKey, "Y"); if (sRet == UserCom.RST_OK) //#20171227 인천공항 포스연동 end, phj - #20180313 { //#20180119 로직변경 start,phj //기존 /* // 팝업 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INCHEONAIRPORT, sMenuKey }); if (sRet != UserCom.RST_OK) { return; } */ //#20180119 로직변경 end,phj m_cDataService.UpdatePluAmount(); // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePayAmount(); // 결제 금액 재 계산 처리 // 결제체크 CheckSaleComplete(); } UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "IncheonAirport Button Click End [" + sRet.ToString() + "]"); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion //#20171227 인천공항 포스연동 end, phj //#20171227 인천공항 포스연동 start, phj #region 인천공항 결제완료처리 private string IncheonAireportPayClose(string sMenuKey) { if (PosMstManager.GetPosOption(POS_OPTION.OPT512) != "1") { //WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0765); //인천공항이 아닌데, 혹시 이 함수 탔을 경우 대비. return UserCom.RST_OK; } string sRet = UserCom.RST_ERR; try { //#20171227 인천공항 포스연동 start, phj - #20180313 //위치이동 //기존 /* //#20180119 로직변경 start,phj bool bCashPayCheck = false; ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); for (int iRow = 0; iRow < alPayItem.Count; iRow++) { Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow]; if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.CASH_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.CASH.CASH_PAY) { //#20171227 인천공항 포스연동 start, phj - #20180313 if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; //#20171227 인천공항 포스연동 end, phj - #20180313 bCashPayCheck = true; break; } } if (bCashPayCheck == true) { sRet = UserCom.RST_OK; return sRet; } //#20180119 로직변경 start,phj */ //#20171227 인천공항 포스연동 end, phj - #20180313 string sCloseRet = m_cAirPortTran.IncheonAireportClose(sMenuKey, "N"); //if (sCloseRet == UserCom.RST_ERR) if (sCloseRet == UserCom.RST_OK) { //#20180119 로직변경 start,phj //기존 /* sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INCHEONAIRPORT, sMenuKey }); if (sRet != UserCom.RST_OK) { //WinManager.ConfirmMessage("통합POS에서 결제내역을 가져오는데 실패하였습니다."); return sRet; } */ //#20180119 로직변경 end,phj sRet = UserCom.RST_OK; m_cDataService.UpdatePluAmount(); // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePayAmount(); // 결제 금액 재 계산 처리 } //#20180119 로직변경 start,phj //기존 /* else if (sCloseRet == UserCom.RST_IGNORE) { // 예를들어) // spc 결제완료 -> 통합포스 일괄취소 -> 인천공항포스 버튼 클릭 -> y 루틴 타고, 결제완료되는 시점에 n 루틴타면 두번 등록되는 현상 방지 sRet = UserCom.RST_OK; } */ //#20180119 로직변경 end,phj return sRet; } 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; } } #endregion //#20171227 인천공항 포스연동 end, phj //#20170828 해피포인트 적립 제외 버튼 추가 phj, start private void HappyPoint_SaveExclude(string sMenuKey) { string sRet = UserCom.RST_ERR; try { //#20180103 해피포인트 적립 제외 버튼 선택 취소 기능 start //기존 //m_cTrnStatus.Head.HP_EXCLUDE_YN = "1"; //변경 if (m_cTrnStatus.Head.HP_EXCLUDE_YN == "1") { m_cTrnStatus.Head.HP_EXCLUDE_YN = "0"; } else { m_cTrnStatus.Head.HP_EXCLUDE_YN = "1"; } //#20180103 해피포인트 적립 제외 버튼 선택 취소 기능 end IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 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); } } //#20170828 해피포인트 적립 제외 버튼 추가 phj, end #region PayMainProc 결제 메인 기능 처리 /// /// 결제 메인 기능 처리 /// /// public void PayMainProc(string sFuncCode, string sInputData) { string sRet; try { if (WinBasic.CheckMenuKeyAuth(sFuncCode) == false) return; // 기능키 판매원 권한 체크 //string sMngAuth = PosMstManager.GetMstPicAuth(m_cPosStatus.Base.CashierNo + sFuncCode); //switch (sMngAuth) //{ // case PosConst.MNG_AUTH_DIV.NON_PERMISSION: // WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0308), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0505), false); // return; // case PosConst.MNG_AUTH_DIV.PERMISSION: // break; // case PosConst.MNG_AUTH_DIV.SUPERVISOR: // if (WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_ADMIN }) == UserCom.RST_ERR) return; // //sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_CASHIER_INPUT, "Supervisor" }); // //if (sRet != UserCom.RST_OK) // //{ // // return; // //} // break; //} if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_WAIT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING) // 결제 모드 { //키유효성 체크 if (m_cDataCommon.FunctionKeyValidity(sFuncCode) == false) { WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054)); return; } // 결제할인 마스터의 결제할인 중복 가능 여부 체크 if (m_cDataCommon.PayDcDuplicationCheck(sFuncCode) == false) return; SetPayMainTopMot(sFuncCode); //MOT 변경! SerialMsrToEmul(); // MSR변환프로그램 체크 switch (sFuncCode) { //#20170828 해피포인트 적립 제외 버튼 추가 phj, start case PosKey.MENU_KEY.HAPPY_SAVE_EXCLUDE: HappyPoint_SaveExclude(sFuncCode); break; //#20170828 해피포인트 적립 제외 버튼 추가 phj, end //#20171227 인천공항 포스연동 start, phj case PosKey.MENU_KEY.INCHEON_AIRPORT: IncheonAireport(sFuncCode); break; //#20171227 인천공항 포스연동 end, phj //#20180413 웰컴카드 신규기능 추가 start,phj case PosKey.MENU_KEY.WELCOMECARD_ISSUE:// 웰컴카드 발급 WelcomeCard_Issue(sFuncCode, "2"); break; case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER:// 웰컴카드 해피앱 고객등록 WelcomeCard_Issue(sFuncCode, "2"); break; //#20180413 웰컴카드 신규기능 추가 end,phj case PosKey.MENU_KEY.HAPPY_POINT: //해피포인트 적립 case PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA: //해피포인트 적립-중국 PayHappyPoint(sFuncCode); break; case PosKey.MENU_KEY.OKCASHBACK_SAVE: //OCB포인트 적립 PayOkCashbackSave(sFuncCode); break; case PosKey.MENU_KEY.SKT: // SKT case PosKey.MENU_KEY.KT: // KT case PosKey.MENU_KEY.KT_VIP: // KT_VIP //#20180413 웰컴카드 신규기능 추가 start,phj case PosKey.MENU_KEY.WELCOMECARD_DC: //#20180413 웰컴카드 신규기능 추가 end,phj case PosKey.MENU_KEY.LGT: // LGT PayPointMobileCom(sFuncCode); break; case PosKey.MENU_KEY.PAY_OTHER_DC: //기타할인 sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, sFuncCode }); if (sRet != UserCom.RST_ERR) { PayMainProc(sRet, sInputData); // 선택된 업무 실행 } break; case PosKey.MENU_KEY.HAPPY_DC_COUPON: //해피쿠폰할인 PayHappyPointCouopn(sFuncCode, "0"); break; case PosKey.MENU_KEY.SPC_EMPLOYEE_DC: //SPC임직원할인 case PosKey.MENU_KEY.SPC_EMPLOYEE_DC_PAY: //SPC임직원할인(결제) SPCEmployeeDC(sFuncCode); break; case PosKey.MENU_KEY.SPC_EMPLOYEE_DC_CHINA: //SPC임직원할인-중국 SPCEmployeeDC_China(sFuncCode); break; case PosKey.MENU_KEY.SEVERANCE_DC: //세브란스할인 SeveranceDC(sFuncCode); break; case PosKey.MENU_KEY.DC_COUPONS: //쿠폰할인 CouponDC(sFuncCode); break; case PosKey.MENU_KEY.PAY_INSTOR_DC: //입점매장직원할인 case PosKey.MENU_KEY.PAY_INSTOR_DC_5: iNStorDC(sFuncCode); break; case PosKey.MENU_KEY.PAY_INSTOR_PAY: // 기타결제 iNStorDC(sFuncCode); break; case PosKey.MENU_KEY.TOTAL_DC_AMT: // 전체금액할인 case PosKey.MENU_KEY.TOTAL_DC_RATE: // 전체%할인 case PosKey.MENU_KEY.TOTAL_ADDDC_AMT: // 추가금액할인 TotalDC(sFuncCode); break; case PosKey.MENU_KEY.KAIST_DC: // 카이스트할인(2017.05.15) case PosKey.MENU_KEY.HPORDER_REVDC: // 해피오더사전예약할인(2017.05.15) PayDcMstToDc(sFuncCode); break; case PosKey.MENU_KEY.CAKE_VOUCHERS: //케익교환권 CakeChange(sFuncCode); break; case PosKey.MENU_KEY.CASH: //현금 PayCash(sFuncCode, sInputData); break; case PosKey.MENU_KEY.CREDIT_CARD: //신용카드 PayCreditCard(sFuncCode, sInputData); break; case PosKey.MENU_KEY.OTHER_PAYMENTS: //기타결제 sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, sFuncCode }); if (sRet != UserCom.RST_ERR) { // ------------------------------------------------------------------------------------------- // 세브란스 직원식 상품 체크 // ------------------------------------------------------------------------------------------- string sMenuKey = sRet; sRet = SeveranceiTemCheck(sMenuKey); if (sRet != UserCom.RST_OK) return; // ------------------------------------------------------------------------------------------- PayMainProc(sMenuKey, sInputData); // 선택된 업무 실행 } break; case PosKey.MENU_KEY.MOBILE_COUPON: //모바일 쿠폰 PayMobileCoupon(sFuncCode); break; case PosKey.MENU_KEY.CHECK_CASH: //수표 case PosKey.MENU_KEY.CHECK_SEARCH: //수표 조회 PayCheck(sFuncCode); break; case PosKey.MENU_KEY.GIFT_CARD: //상품권 PayGift(sFuncCode); break; case PosKey.MENU_KEY.MEAL_TICKET: //식권 PayMealTicket(sFuncCode); break; case PosKey.MENU_KEY.STORE_COUPON: //매장쿠폰 break; case PosKey.MENU_KEY.HAPPY_POINT_USE: //해피포인트 사용 case PosKey.MENU_KEY.HAPPY_POINT_USE_CHINA: //해피포인트 사용 -중국 case PosKey.MENU_KEY.OLIBANK: //OLIBANK case PosKey.MENU_KEY.OKCASHBACK: //OCB case PosKey.MENU_KEY.BLUE_MEMBERS: //블루 멤버스 case PosKey.MENU_KEY.RED_MEMBERS: //레드 멤버스 PayPointMemberUse(sFuncCode); break; case PosKey.MENU_KEY.SAMSUNG_POINTS: //삼성포인트 PaySamSungPoint(sFuncCode); break; case PosKey.MENU_KEY.WOORIMORE_POINTS: //우리모아포인트 PaySamSungPoint(sFuncCode); break; case PosKey.MENU_KEY.HYUNDAI_M_POINTS: //현대M포인트 PaySamSungPoint(sFuncCode); break; //*** MoonSeokWoo 2017.12.12 Add case PosKey.MENU_KEY.SHINHANCARD_POINT: //신한포인트 PaySamSungPoint(sFuncCode); break; //*** MoonSeokWoo 2017.12.12 End case PosKey.MENU_KEY.BALANCE_VOUCHER: //잔액교환권 PayExchangeTicket(sFuncCode); break; case PosKey.MENU_KEY.FOREIGN_CURRENCY: //외화 PayForeign(sFuncCode); break; case PosKey.MENU_KEY.ALIPAY: //알리페이 PayAliPay(PosKey.MENU_KEY.ALIPAY); break; case PosKey.MENU_KEY.WECHATPAY: //위챗페이 WeChatPay(PosKey.MENU_KEY.WECHATPAY); break; case PosKey.MENU_KEY.WECHATPAY_BAIRONG: //샤오청쉬 위챗페이-바이롱;girak.kim;2017.09.11.001 WeChatPay_BaiRong(PosKey.MENU_KEY.WECHATPAY_BAIRONG); break; case PosKey.MENU_KEY.XIAOCHENGXU_GIFTCARD: //샤오청쉬 기프트카드;girak.kim;2017.09.11.001 XiaoChengxu_GiftCard(PosKey.MENU_KEY.XIAOCHENGXU_GIFTCARD); break; case PosKey.MENU_KEY.SMILE_PAY: //스마일페이 SmilePay(PosKey.MENU_KEY.SMILE_PAY); break; case PosKey.MENU_KEY.T_PAY: // T페이 PayTPay(); break; case PosKey.MENU_KEY.SEVERANCE_PAYMENTS: //세브란스결제 SeveranceDC(sFuncCode); break; case PosKey.MENU_KEY.SPC_EMPLOYEES_PAY: //SPC임직원결제 SPCEmployeeDC(sFuncCode); break; case PosKey.MENU_KEY.T_MONEY: //T-MONEY PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, sFuncCode, "", "" }); break; case PosKey.MENU_KEY.CASHBEE: //캐시비 PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, sFuncCode, "", "" }); break; case PosKey.MENU_KEY.TMONEY_SEARCH: //교통카드 잔액조회 PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" }); break; case PosKey.MENU_KEY.PREPAID_CARDS_HPJOY: //선불카드(해피조이) PayPrepaidCard_China(sFuncCode); break; case PosKey.MENU_KEY.HP_GIFT_CHARGED: //선불카드(해피조이) 충전 PayHappyGift(sFuncCode); break; case PosKey.MENU_KEY.CREDIT_CUSTOMER: //외상 PaySaleOnCustomer(sFuncCode); break; // Rhee, 2017/09/22 딜리버리 외매(선매) 추가 -- START case PosKey.MENU_KEY.CREDIT_DELIVERY: //외상 - 딜리버리(외매) PaySaleOnCustomer(sFuncCode); break; // Rhee, 2017/09/22 딜리버리 외매(선매) 추가 -- END case PosKey.MENU_KEY.ONLINE_COUPONS: //온라인 쿠폰(중국) PayOnLineCoupon(sFuncCode); break; case PosKey.MENU_KEY.PREPAID_CARDS: //선불카드 PayPrepaidCard(sFuncCode); break; case PosKey.MENU_KEY.HAPPY_GIFTCARD: //해피기프트 사용 PayHappyGift(sFuncCode); break; case PosKey.MENU_KEY.RESERVATION: //예약 RegPayReservations(); break; case PosKey.MENU_KEY.SERVICE_CHARGE: //Service Charge RegServiceChrge(sFuncCode); break; //case PosKey.MENU_KEY.PAYMENT_CANCELED: //결제 취소 // break; //case PosKey.MENU_KEY.ADDITIONAL_ORDERS: //추가주문 // break; case PosKey.MENU_KEY.ESC_PREVIOUS: //이전 break; case PosKey.MENU_KEY.SAMSUNG_SFC: //삼성카드 제휴할인 SFC PaySamsungFamilyCard(sFuncCode); break; case PosKey.MENU_KEY.BUNDLE_ITEM: //묶음상품/쇼킹박스 BundleiTem(sFuncCode); break; case PosKey.MENU_KEY.OURHOME: //아워홈 PayOurHome(PosKey.MENU_KEY.OURHOME); break; case PosKey.MENU_KEY.ORDER_CALLCENTER: // 배달(콜센터) case PosKey.MENU_KEY.ORDER_BAEMIN: // 배달(배달의민족) case PosKey.MENU_KEY.ORDER_YOGIYO: // 배달(요기요)(2017.05.15) PayOrderDelivery(sFuncCode); break; case PosKey.MENU_KEY.VIP_POINT: // 베트남 신용카드(VIP POINT) - 프리픽스 캠페인 적용 PayVipPoint(sFuncCode); break; //#20170731, 해피기프트카드(코나머니) 개발 Start, srlee case PosKey.MENU_KEY.HPGIFTCARD: // 해피기프트카드(코나머니) PayHappyGiftCard(sFuncCode); break; //#20170731, 해피기프트카드(코나머니) 개발 End, srlee // 제휴카드(통합) 할인 처리(2017.08.29) -- START case PosKey.MENU_KEY.MOBILE_UNITY: PayPointMobileUnity(sFuncCode); break; // 제휴카드(통합) 할인 처리(2017.08.29) -- END //#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 start,phj /* case PosKey.MENU_KEY.AIRPORT_VIP_LOUNGE: PayInCheonVipLounge(sFuncCode, sInputData); break; */ //#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 end,phj //grayber@20180208 코레일 마일리지 입력 start - 메뉴키 기능 추가 case PosKey.MENU_KEY.KORAIL_MILEAGE: PayKorailMileage(sFuncCode, sInputData); break; //grayber@20180208 코레일 마일리지 입력 end default: if (WinSale.ExecuteBinessRun(sFuncCode) == UserCom.RST_IGNORE) { // } break; } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayHappyPoint 해피포인트 적립 카드 등록 /// /// 해피포인트 적립 카드 등록 /// private void PayHappyPoint(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 포인트카드 등록 여부 체크(포인트 카드는 한장만 등록 가능) ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // 해피포인트 - 중국 if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA) return; // 해피포인트 - 한국 if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) return; // OKCASHBACK if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) return; } if (m_cTrnStatus.Sale.RecvedPayAmt > 0) { // 모바일쿠폰 등록 후 해피포인트 등록 처리(2017.08.28) -- START ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem) { if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue; if (cPayItem.PAY_DTL_CD_05 != PosConst.PAY_DC_TYPE.PAY) continue; // 할인결제구분 (1:결제, 2:할인) if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); return; } } // OLD //WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); //return; // 모바일쿠폰 등록 후 해피포인트 등록 처리(2017.08.28) -- END } if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "0") // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함(한국), 2:사용함(중국)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364); return; } // 해피포인트 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, sMenuKey, "0" }); if (sRet != UserCom.RST_OK) return; //#20180413 웰컴카드 신규기능 추가 start,phj //----------------------------------------------------------------- // 해피앱 고객이고 HP회원번호 존재하고 HP웰컴카드 번호가 존재 시 // 웰컴카드 할인적용 할 것인지 안내팝업 오픈!! //----------------------------------------------------------------- if (PosMstManager.GetPosOption(POS_OPTION.OPT516) == "1") { string m_HPWccCard = ""; string m_HPCustNo = ""; bool bWccInfoCheck = false; bool bMobileDcCheck = false; #region 웰컴카드 할인조건이 되는지 체크! ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD != ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 != ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) continue; //#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 start //if (cEtcItem.OCCUR_ENTRY_12 != "Y") continue; //해피앱여부 //if (cEtcItem.OCCUR_ENTRY_10 == "") continue; //HP회원번호 //#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 end //HP회원번호 m_HPCustNo = CmUtil.MidH(cEtcItem.OCCUR_ENTRY_10, 0, 10).Trim(); //HP웰컴카드 m_HPWccCard = cEtcItem.OCCUR_ENTRY_19; //#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 start //기존 //if (m_HPCustNo != "" && m_HPWccCard != "") { bWccInfoCheck = true; } //변경 if (m_HPWccCard != "") { bWccInfoCheck = true; } //#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 end break; } #endregion #region 제휴할인 적용된 건이 있는지 체크! if (bWccInfoCheck == true) { ArrayList alPays = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); for (int iRow = 0; iRow < alPays.Count; iRow++) { Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPays[iRow]; if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT) { bMobileDcCheck = true; break; } } } #endregion #region 웰컴카드 할인적용! if (bWccInfoCheck == true && bMobileDcCheck == false) { //if (WinManager.QuestionMessage("웰컴할인 적용 하시겠습니까?") == true) //if (WinManager.QuestionMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1139)) == true) if (WinManager.QuestionMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1139), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1138)) == true) { frmPntMobileUnity frmPntMobileUnity = new frmPntMobileUnity("Initial"); string _strCardDiv = frmPntMobileUnity.SelectMobileUnityKind(m_HPWccCard); m_cPosStatus.Sale.strMobileUnityCardNo = m_HPWccCard; // 웰컴카드번호! m_cPosStatus.Sale.strHappyPointCardNo_Title = _strCardDiv; // 웰컴카드구분자! //-------------------------------------- // 제휴카드 상태바 표시을 위한 배열 설정 //-------------------------------------- #region 제휴카드 상태바 표시를 위한 배열 설정 if (m_cPosStatus.Sale.strPriorReading_Title[0] == null || m_cPosStatus.Sale.strPriorReading_Title[0] == "") { //-------------------------------------------------------- // 만약 첫번째로 리딩된 해피포인트 및 제휴카드가 없을 경우 // -> 그대로 입력한다. //-------------------------------------------------------- m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title; } else if (m_cPosStatus.Sale.strPriorReading_Title[1] == null || m_cPosStatus.Sale.strPriorReading_Title[1] == "") { //------------------------------------------------------------------- // 만약 두번째로 리딩된 해피포인트 및 제휴카드가 없을 경우 // -> 두번째에 해피포인트를 입력한다. // 단, 첫번째로 리딩된 제휴카드가 있을 경우 이전 제휴카드를 치환한다. //------------------------------------------------------------------- if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC") { m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title; } else { m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title; } } else { //---------------------------------------------------------------- // 만약 첫번째, 두번째로 리딩한 해피포인트 및 제휴카드가 있을 경우 // 이전 제휴카드를 치환한다. //---------------------------------------------------------------- if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC") { m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title; } else { m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title; } } #endregion //if (pnlPayMainBack.Visible == true) //{ // #region '해피포인트' 및 '제휴할인 카드' 화면을 표시한다. // #region 만약 제휴할인 카드 값이 설정되어 있을 경우 제휴할인 카드 화면을 표시한다. // if (m_cPosStatus.Sale.strMobileUnityCardNo != "") // { // // 제휴할인 카드(00292) 화면 표시 ----- // fSalMain.PayComFuncion(PosKey.MENU_KEY.MOBILE_UNITY, "2"); // } // #endregion // #endregion //} if (m_cPosStatus.Sale.strMobileUnityCardNo != "") { if ((m_cTrnStatus.Sale.RemainPayAmt == 0 && PosMstManager.GetPosOption(POS_OPTION.OPT322) == "1") || (m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0569); return; } //키유효성 체크 if (m_cDataCommon.FunctionKeyValidity(PosKey.MENU_KEY.MOBILE_UNITY) == false) { WinManager.ConfirmMessage("(" + PosKey.MENU_KEY.MOBILE_UNITY + ") " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054)); return; } // 제휴할인 카드(00292) 화면 표시 ----- PayMainProc(PosKey.MENU_KEY.MOBILE_UNITY, "2"); } } } #endregion } //#20180413 웰컴카드 신규기능 추가 end,phj // 디지털메뉴보드 I/F //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start //기존 //if (m_cPosStatus.Base.DmbIf == "1") //변경 //if (m_cPosStatus.Base.DmbIf == "1" && // PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1") ////#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end //{ // ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); // foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc) // { // if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) // { // //#20180821 해피포인트 고객이름 마스킹 start // if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); } // //#20180821 해피포인트 고객이름 마스킹 end // // 디지털메뉴보드 I/F // IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); // // 포인트조회 // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.POINT_INFO // 전문 구분 // , "HPC" // POINT_DIV // , cEtcItem.OCCUR_ENTRY_12 // APP_DIV (Y:HPC APP, N:그 외) // , "1" // DIV(1:조회, 2:적립, 3:할인, 4:사용 ...) // , "" // AMOUNT(포인트사용금액) // , "" // POINT(적립,할인,사용포인트) // , "" // R_POINT(잔여포인트) // , "" // // , cEtcItem.OCCUR_ENTRY_01 // CARD_NO(마스킹 된 카드 번호) // , cEtcItem.HP_CUST_NAME // CUST_NAME(고객명) // , "" }); // CAMPAIGN_INFO // break; // } // } //} //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(0, false); CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayOkCashbackSave OKCASHBACK 적립 카드 등록 /// /// OKCASHBACK 적립 카드 등록 /// private void PayOkCashbackSave(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 포인트카드 등록 여부 체크(포인트 카드는 한장만 등록 가능) ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // 해피포인트 - 중국 if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA) return; // 해피포인트 - 한국 if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) return; // OKCASHBACK if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) return; } if (m_cTrnStatus.Sale.RecvedPayAmt > 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); return; } // OCB 적립 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_OCB_SAVE, sMenuKey }); if (sRet != UserCom.RST_OK) return; //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(0, false); CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayPointMobileCom 통신사 할인 처리 /// /// 통신사 할인 처리 /// /// private void PayPointMobileCom(string sMenuKey) { double nDestAmt = 0; string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) { ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem) { if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue; //#20171012 해피포인트 사용 후 통신사 할인 중복 가능 start //기존 //if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) // 통신사할인 모바일쿠폰과 중복 가능 //변경 if ((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) && ((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM) || (cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT))) //#20171012 해피포인트 사용 후 통신사 할인 중복 가능 end { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); return; } } } else { if (m_cTrnStatus.Sale.RecvedPayAmt > 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); return; } } // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } if (sMenuKey == PosKey.MENU_KEY.KT_VIP) { // KTVIP는 BR만 사용 가능 if (m_cPosStatus.Mst.CorpDiv != ItemConst.CORP_DIV.BR) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364); return; } // 브랜드 코드 체크 if (m_cPosStatus.Base.BrandCd != PosConst.MST_BRAND_CODE.BR_BR && m_cPosStatus.Base.BrandCd != PosConst.MST_BRAND_CODE.BR_DD) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364); return; } // 통신사 VIP 증정 대상 금액 획득 nDestAmt = m_cDataCommon.SrarchTermCoopCmpDcItem(ItemConst.TR_ITEM_ID.MOBILE_COM_POINT, ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_VIP, ""); if (nDestAmt <= 0) { //#11155_[DD] KT 더블할인 프로모션 개발 요청_hs //if (m_cPosStatus.Base.BrandCd == PosConst.MST_BRAND_CODE.BR_BR) //{ // KT멤버십 더블할인 체크 nDestAmt = m_cDataCommon.SrarchTermCoopCmpDcItem(ItemConst.TR_ITEM_ID.MOBILE_COM_POINT, ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_DOUBLE, ""); sMenuKey = PosKey.MENU_KEY.KT_DOUBLE; //} if (nDestAmt <= 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0154); return; } } } else { // 통신사 할인 대상 상품 체크 nDestAmt = m_cDataService.GetPluTagetAmount(sMenuKey); if (nDestAmt < 0) { // 캠페인 중복 불가(캠페인과 통신사 할인 중 선택) ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); double nCampAmt = 0; foreach (Column.TR_PLU.DATA cPluItem in aSaleItem) { if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소 if (cPluItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호 nCampAmt = CmUtil.DoubleAdd(nCampAmt, cPluItem.CPI_DC_AMT); } string sMessage = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0370), m_cPosStatus.Global.NumericTOCurrency(nCampAmt)); if (WinManager.QuestionMessage(sMessage) == false) return; // 캠페인 취소 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ClearCampaignAmt(); // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePluAmount(); IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayItem(1, false); cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 } else if (nDestAmt == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0134); return; } } // 통신사 할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_MOBILE_COM, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region SPCEmployeeDC SPC 임직원 할인 처리 /// /// SPC 임직원 할인 처리 /// /// private void SPCEmployeeDC(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } //// SPC 임직원 할인 등록 여부 체크 //ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); //foreach (Column.TR_PAYMENT.DATA cPayItem in alPayment) //{ // if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // // SPC 임직원 할인 // if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM) return; //} if (sMenuKey == PosKey.MENU_KEY.SPC_EMPLOYEES_PAY) { // SPC 임직원 결제화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_EMP, sMenuKey }); if (sRet != UserCom.RST_OK) return; } else { // SPC 임직원 할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_EMP, sMenuKey }); if (sRet != UserCom.RST_OK) return; //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(0, false); } CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region SPCEmployeeDC SPC 임직원 할인 - 중국 처리 /// /// SPC 임직원 할인 - 중국 처리 /// /// private void SPCEmployeeDC_China(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // SPC 임직원 할인 - 중국 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_EMP_CHINA, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region TotalDC 전체 할인 처리 /// /// 전체 할인 처리 /// /// private void TotalDC(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 전체 금액/% 할인 if (sMenuKey == PosKey.MENU_KEY.TOTAL_DC_RATE || sMenuKey == PosKey.MENU_KEY.TOTAL_DC_AMT) { if (m_cTrnStatus.Sale.RecvedPayAmt > 0) { // 임의 할인 중복 등록 체크(받은금액이 있으면 결제할인 안됨) WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0112); return; } } // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } // 임의 할인 중복 등록 불가 체크 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;// 지정취소 if (sMenuKey == PosKey.MENU_KEY.TOTAL_DC_AMT || sMenuKey == PosKey.MENU_KEY.TOTAL_DC_RATE) { if (cSaleItem.ITEM_DC_AMT > 0) { if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL && cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.IN_DC_TOTAMT && cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.IN_DC_TOTRATE) { WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다. return; } } } else if (sMenuKey == PosKey.MENU_KEY.TOTAL_ADDDC_AMT) { if (cSaleItem.ETC_DC_AMT > 0) { if (cSaleItem.ETC_DC_DIV != ItemConst.PLU_DC_DIV.NORMAL && cSaleItem.ETC_DC_DIV != ItemConst.PLU_DC_DIV.IN_DC_ADDAMT) { WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다. return; } } } } // 전체 할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_TOTAL, sMenuKey }); if (sRet != UserCom.RST_OK) return; //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(0, false); CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayDcMstToDc 결제할인 마스터 참조 할인 처리 /// /// 결제할인 마스터 참조 할인 처리(카이스트할인, 해피오더사전예약할인)(2017.05.15) /// /// private void PayDcMstToDc(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; if (sMenuKey == PosKey.MENU_KEY.KAIST_DC) // 카이스트 할인 { if (m_cTrnStatus.Sale.RecvedPayAmt > 0) { // 임의 할인 중복 등록 체크(받은금액이 있으면 결제할인 안됨) WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0112); return; } } // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } // 임의 할인 중복 등록 불가 체크 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;// 지정취소 if (sMenuKey == PosKey.MENU_KEY.KAIST_DC) //카이스트 할인 { if (cSaleItem.ITEM_DC_AMT > 0) { if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.KAIST_DC) // 카이스트 할인 { WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다. return; } } } else if (sMenuKey == PosKey.MENU_KEY.HPORDER_REVDC) // 해피오더사전예약할인 { if (cSaleItem.ETC_DC_AMT > 0) { if (cSaleItem.ETC_DC_DIV != ItemConst.PLU_DC_DIV.HPORDER_REVDC) // 해피오더사전예약할인 { WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다. return; } } } } // 카이스트 할인, 해피오더사전예약할인(2017.05.15) IPaymentUs cPaySvr = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PAYDCMST_TO_DC); sRet = cPaySvr.SetPayment(new string[] { sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region CouponDC 쿠폰할인 처리 /// /// 쿠폰할인 처리 /// /// private void CouponDC(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } if (sMenuKey == PosKey.MENU_KEY.DC_COUPONS) { // 쿠폰할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_COUPON, sMenuKey }); } else if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_DC) { // 입점매장직원할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_DC, sMenuKey }); } else if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_PAY) { // 기타결제 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_PAY, sMenuKey }); } if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region iNStorDC 입점매장직원할인 처리 /// /// 입점매장직원할인 처리 /// /// private void iNStorDC(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_DC || sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_DC_5) { // 입점매장직원할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_DC, sMenuKey }); } else if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_PAY) { // 기타결제 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_PAY, sMenuKey }); } if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region CakeChange 케익교환권 할인 처리 /// /// 케익교환권 할인 처리 /// /// private void CakeChange(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 케익교환권 할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_CAKE_VOUCHERS, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region SeveranceDC 세브란스병원 임직원 할인 처리 /// /// 세브란스병원 임직원 할인 처리 /// /// private void SeveranceDC(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } if (sMenuKey == PosKey.MENU_KEY.SEVERANCE_PAYMENTS) { // 세브란스병원 임직원 결제 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_SEVERANCE, sMenuKey }); } else if (sMenuKey == PosKey.MENU_KEY.SEVERANCE_DC) { // 세브란스병원 임직원 할인 화면 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SEVERANCE_DC, sMenuKey }); } if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayPointMemberUse OK CashBack/ OIL BANK/ BLUE / RED 포인트 사용 /// /// OK CashBack/ OIL BANK/ BLUE / RED 포인트 사용 /// /// /// /// private void PayPointMemberUse(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { if (!sMenuKey.Equals(PosKey.MENU_KEY.OKCASHBACK)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } } if (sMenuKey == PosKey.MENU_KEY.HAPPY_POINT_USE || sMenuKey == PosKey.MENU_KEY.HAPPY_POINT_USE_CHINA) { // 해피포인트 사용 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT_USE, sMenuKey }); } else { // 제휴 포인트 사용 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_MEMBERS_USE, sMenuKey }); } if (sRet != UserCom.RST_OK) return; // 디지털메뉴보드 I/F //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start //기존 //if (m_cPosStatus.Base.DmbIf == "1") //변경 //if (m_cPosStatus.Base.DmbIf == "1" && // PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1") ////#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end //{ // ArrayList alTrPay = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alTrPay[alTrPay.Count - 1]; // if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT) // { // // 디지털메뉴보드 I/F // IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); // // 포인트조회 // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.POINT_INFO // 전문 구분 // , "HPC" // POINT_DIV // , cPayItem.OCCUR_ENTRY_12 // APP_DIV (Y:HPC APP, N:그 외) // , "4" // DIV(1:조회, 2:적립, 3:할인, 4:사용 ...) // , cPayItem.PAY_AMT.ToString() // AMOUNT(포인트사용금액) // , cPayItem.AMT_ENTRY_01.ToString() // POINT(적립,할인,사용포인트) // , cPayItem.AMT_ENTRY_05.ToString() // R_POINT(잔여포인트) // , "" // // , cPayItem.OCCUR_ENTRY_01 // CARD_NO(마스킹 된 카드 번호) // , "" // CUST_NAME(고객명) // , "" }); // CAMPAIGN_INFO // } //} CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayAliPay 알리페이 /// /// 알리페이 /// /// /// /// private void PayAliPay(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 알리페이 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_ALIPAY, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region WeChatPay 위챗페이 /// /// 위챗페이 /// /// /// /// private void WeChatPay(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 위챗페이 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_WECHATPAY, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region #20170911.001, 중국 위쳇 페이 바이롱과 연동 개발 Start, girak.kim /// /// 위챗페이 - 바이롱 /// /// /// /// // girak.kim; 2017.09.11.001 private void WeChatPay_BaiRong(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 위챗페이 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_WECHATPAY_BAIRONG, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region #20170911.001, 중국 샤오청쉬 기프트카드 바이롱과 연동 개발 Start, girak.kim /// /// 중국 샤오청쉬 기프트카드 - 바이롱 /// /// /// /// // girak.kim; 2017.09.11.001 private void XiaoChengxu_GiftCard(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 위챗페이 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_XIAOCHENGXU_GIFTCARD, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region SmilePay 스마일페이 /// /// 스마일페이 /// /// /// /// private void SmilePay(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 스마일페이 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_SMILEPAY, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayHappyPointCouopn 해피포인트 쿠폰 /// /// 해피포인트 쿠폰 /// private void PayHappyPointCouopn(string sMenukey, string sSelRow) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } // 해피포인트 쿠폰 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HPCOUPON, sMenukey, sSelRow }); if (sRet != UserCom.RST_OK) return; //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매화면 //cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion /// /// T 페이 /// private void PayTPay() { try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; #region 통신사(SKT) 할인 가능여부 체크 // 통신사(SKT) 할인 대상금액 var destAmt = 0.0; // 받은금액이 있으면 통신사(SKT) 할인불가(통합결제 불가) if (m_cTrnStatus.Sale.RecvedPayAmt > 0) destAmt = -1; // 결제할인 마스터의 결제할인 중복 가능 여부 체크, 중복이 불가능 하면, 할인불가 (통합결제 불가) var payWayCd = m_cDataCommon.GetMenuKeyToPayWayCd(PosKey.MENU_KEY.SKT); var payDtlCd = m_cDataCommon.GetMenuKeyToPayDtlCd(PosKey.MENU_KEY.SKT); if (m_cDataCommon.PayDcDuplicationCheck(payWayCd, payDtlCd, false) == false) destAmt = -1; // SKT 할인 미사용 매장이면(기능키 확인), 할인불가(통합결제 불가) //DataTable dt = m_cDataCommon.SeletFuncKeyGroup(PosKey.MENU_KEY.PAY_DC_MENU); DataTable dt = m_cDataCommon.SeletFuncKeyGroup(""); if (dt == null || dt.Rows.Count == 0) { destAmt = -1; } else { DataRow[] dr = dt.Select("FUNC_ID = '" + PosKey.MENU_KEY.SKT + "'"); destAmt = (dr == null || dr.Length == 0) ? -1 : 0; } // 통신사 할인 대상 상품 체크 if (destAmt == 0) { // 할인대상금액 조회 destAmt = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.SKT); if (destAmt < 0) { // 캠페인 중복 불가(캠페인과 통신사 할인 중 선택) ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); double nCampAmt = 0; foreach (Column.TR_PLU.DATA cPluItem in aSaleItem) { if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소 if (cPluItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호 nCampAmt = CmUtil.DoubleAdd(nCampAmt, cPluItem.CPI_DC_AMT); } string sMessage = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0370), m_cPosStatus.Global.NumericTOCurrency(nCampAmt)); if (WinManager.QuestionMessage(sMessage) == false) return; // 캠페인 취소 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ClearCampaignAmt(); // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePluAmount(); // 결제등록정보 화면표시 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayPayment(); // 할인대상금액 재 조회 destAmt = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.SKT); } } // OCB 적립 후 SKT 할인 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { destAmt = 0; } } #endregion // T 페이 string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_TPAY, PosKey.MENU_KEY.T_PAY, destAmt.ToString() }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 현금 결제 처리 /// private void PayCash(string sMenuKey, string sInputData) { try { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { //WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다."); WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745); return; } //#20171227 인천공항 포스연동 end, phj string sRet = UserCom.RST_ERR; // ------------------------------------------------------------------------------------------- // 세브란스 직원식 상품 체크 // ------------------------------------------------------------------------------------------- sRet = SeveranceiTemCheck(sMenuKey); if (sRet != UserCom.RST_OK) return; // ------------------------------------------------------------------------------------------- //기존소스 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start // 돈통 오픈 처리 //m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end //#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 // 현금 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH, sMenuKey, sInputData }); if (sRet != UserCom.RST_OK) return; //#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //170811 dkshin 돈통 오픈 처리 시점 변경(현금영수증 전) #region 거래 완료 돈통 열림 체크 /// /// 거래 완료 돈통 열림 체크 /// /// private bool FinishTradeOpenDrawer() { return FinishTradeOpenDrawer(false); } /// /// 거래 완료 돈통 열림 체크 /// /// private bool FinishTradeOpenDrawer(bool bDutchPay) { bool bOpenDrawer = false; try { if (m_cPosStatus.Base.TrainingFlag != "1") //연습모드가 아니면... { // 판매완료시 돈통열림 설정(0:안열림, 1:현금성거래만, 2:전체열림) string sOpt = CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT021), "1"); //UserLog.WriteLogFile(UserCom.LOG_DEBUG, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "sOpt : " + sOpt); if (sOpt == "1") //현금성 거래만 { ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem) { if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (bDutchPay == true) //더치페이 체크 { if (cPayItem.DutchPayPrtDiv == "1") continue; } switch (cPayItem.PAY_WAY_CD) { case ItemConst.TR_ITEM_ID.CASH_ITEM: //현금 case ItemConst.TR_ITEM_ID.GIFT_ITEM: //상품권 case ItemConst.TR_ITEM_ID.CHECK_ITEM: //수표 case ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM: //외환 case ItemConst.TR_ITEM_ID.PAYETC_ITEM: //기타(잔액교환권, 식권) bOpenDrawer = true; break; } if (bOpenDrawer == true) break; } } else if (sOpt == "2") //전체열림 { bOpenDrawer = 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 bOpenDrawer; } #endregion /// /// 묶음상품/쇼킹박스 /// private bool BundleiTem(string sMenuKey) { try { string sRet = UserCom.RST_ERR; sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAL_BUNDLE_ITEM, sMenuKey }); if (sRet != UserCom.RST_OK) return false; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //// 판매모드 변경 //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; //cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } /// /// 더치페이 /// /// /// public bool DutchPay(string sMenuKey, string ReFlag) { try { string sRet = UserCom.RST_ERR; // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { DutchItemClear(); WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); //캠페인 초기화 cCampaignMain.ClearCampaignAmt(); m_cDataService.UpdatePluAmount(); sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_DUTCH_PAY, sMenuKey, ReFlag }); if (sRet != UserCom.RST_OK) { DutchItemClear(); return false; } else { m_cPosStatus.Sale.DutchPayFlg = "1"; m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; RegisterPayment("", ""); // 판매모드 변경 //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT; //// 판매화면 //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.ChangeSalePayMode(false); //화면 초기화 } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } /// /// 더치페이중 중지 상품 처리 /// private void DutchItemClear() { try { // 상품 내역 불러오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count > 0) { ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); //상품 캠페인 재적용 ICampaignUs m_cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaignMain.ExecuteCampaignPluHappyPoint("", true, "", "", "", ""); // 상품 캠페인 계산 m_cDataService.UpdatePluAmount(); // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(true, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } m_cPosStatus.Sale.DutchPayFlg = ""; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 더치페이(금액) /// /// /// private bool DutchPayAmt(string sMenuKey, string ReFlag) { try { string sRet = UserCom.RST_ERR; if (m_cPosStatus.Sale.DutchPayFlg == "2") { if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0295)) == true) { m_cPosStatus.Sale.DutchPayFlg = ""; m_cTrnStatus.Head.AmtDutchPayYn = ""; } return true; } m_cTrnStatus.Head.AmtDutchPayYn = "1"; m_cPosStatus.Sale.DutchPayFlg = "2"; RegisterPayment("", ""); //if (ReFlag == "0") //{ // m_cTrnStatus.Sale.DutchPayTotAmt = m_cTrnStatus.Head.NetSaleAmt; //} //sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_DUTCH_PAY_AMT, sMenuKey, ReFlag }); //if (sRet == UserCom.ERROR) return false; //m_cPosStatus.Sale.DutchPayFlg = "2"; //m_cTrnStatus.Sale.BillSplitNo = m_cTrnStatus.Sale.BillSplitNo + 1; //빌분리번호 //// 총수량, 총매출액 //m_cTrnStatus.Head.TotSaleAmt=m_cDataService.DoubleParse(sRet); //// 총 할인 금액 //m_cTrnStatus.Head.TotDcAmt=0; //// 받은금액 표시 //m_cTrnStatus.Sale.RecvedPayAmt=0; //// 순매출액 표시 처리 //m_cTrnStatus.Sale.RemainPayAmt = m_cDataService.DoubleParse(sRet); //// 넷 세일 //m_cTrnStatus.Head.NetSaleAmt = m_cDataService.DoubleParse(sRet); //// 판매모드 변경 //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT; //// 판매화면 //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.ChangeSalePayMode(false); ////화면 초기화 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } /// /// 수표 조회/결제 처리 /// private void PayCheck(string sMenuKey) { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { //WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다."); WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745); return; } //#20171227 인천공항 포스연동 end, phj try { string sRet = UserCom.RST_ERR; // 수표 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CHECK, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 상품권 조회 /// private void PayGiftSearch(string sMenuKey) { try { string sRet = UserCom.RST_ERR; // 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_GIFT_SCH, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 모바일쿠폰 조회 /// private void PayMobileCouponSearch(string sMenuKey) { try { string sRet = UserCom.RST_ERR; // 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_MOBILE_COUPON_SCH, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 start private bool DC_Check(ref bool pPopup) { bool bValue = false; pPopup = false; try { ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; if (cSaleItem.CANCEL_DIV != "0") continue; //if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 할인 구분 //if (cSaleItem.DC_TYPE != ItemConst.PLU_DC_TYPE.NORMAL) continue;// 할인 유형(0:없음, 1:소계, 2:상품) //if (cSaleItem.DC_RATE != ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 할인 율 //if (cSaleItem.ITEM_DC_AMT != ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 단품 할인 금액 /* if ((cSaleItem.DC_RATE > 0) || (cSaleItem.ITEM_DC_AMT > 0) || (cSaleItem.SUM_DC_AMT >= 0)) { pPopup = true; } if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 할인 구분 if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.POS_DC) continue;// 임의할인 if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTAMT) continue; // 전체금액할인 if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTRATE) continue;// 전체%할인 */ if ((cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL) || (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.POS_DC) || (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTAMT) || (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTRATE)) { if ((cSaleItem.DC_RATE > 0) || (cSaleItem.ITEM_DC_AMT > 0) || (cSaleItem.SUM_DC_AMT > 0)) { pPopup = true; } continue; } bValue = 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); bValue = false; } return bValue; } //#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 end /// /// 모바일쿠폰/결제 처리 /// private void PayMobileCoupon(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; //#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 start //할인 존재 시 모바일 쿠폰 사용 못함. (일반할인제외) bool bPopup = false; if (DC_Check(ref bPopup) == true) return; //일반할인 (%할인, 금액 할인) 존재 시 아래 팝업 오픈. if (bPopup == true) { if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0737) != true) return; } //#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 end sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_MOBILE_COUPON, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 아워홈 /// private void PayOurHome(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_OURHOME, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 해피 기프트 /// private void PayHappyGift(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; if (sMenuKey == PosKey.MENU_KEY.HP_GIFT_CHARGED) // 충전 { sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAL_HP_GIFT_CHARGED, sMenuKey, "" }); } else if (sMenuKey == PosKey.MENU_KEY.HAPPY_GIFTCARD) { // 사용 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HAPPY_GIFTCARD, sMenuKey, "" }); } if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 잔액교환권 /// private void PayExchangeTicket(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; //기존 소스 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start // 돈통 오픈 처리 //m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end //#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_BALANCE_VOUCHER, sMenuKey }); if (sRet != UserCom.RST_OK) return; //#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 외상 /// private void PaySaleOnCustomer(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; //#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 start, phj //판매 제품이 서로 다른 브랜드 일 때, 선불결제 못함. if (m_cPosStatus.Mst.ComplexShopType == "2") // 0:단독매장,1:복합매장구성점포,2:복합매장점포 { if (OtherItem_DuplicateCheck() == false) return; } //#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 end, phj sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CREDIT_CUSTOMER, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 외화 /// private void PayForeign(string sMenuKey) { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { //WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다."); WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745); return; } //#20171227 인천공항 포스연동 end, phj try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 사용여부 체크! if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT305), "0") == "0") { WinManager.ErrorMessage(string.Format("{0}({1})", MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0414), POS_OPTION.OPT305)); return; } //기존소스 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start // 돈통 오픈 처리 //m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end //#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_FOREIGN_CURRENCY, sMenuKey }); if (sRet != UserCom.RST_OK) return; //#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 티머니/캐시비 /// private void PayTMoneyCashBee(string[] aPara) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; sRet = WinPay.ShowForm(aPara); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 선불카드 /// private void PayPrepaidCard(string sMenuKey) { try { string sRet = UserCom.RST_ERR; //#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 start, phj //판매 제품이 서로 다른 브랜드 일 때, 선불결제 못함. if (m_cPosStatus.Mst.ComplexShopType == "2") // 0:단독매장,1:복합매장구성점포,2:복합매장점포 { if (OtherItem_DuplicateCheck() == false) return; } //#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 end, phj if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_PREPAID_CARDS, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 선불카드 - 중국 /// private void PayPrepaidCard_China(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HPJOY, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 삼성포인트 /// private void PaySamSungPoint(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 캠페인 중복 불가(2017.06.05) => 캠페인 적용시 제휴포인트 사용 업무 불가 처리 요청 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA cPluItem in aSaleItem) { if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소 if (cPluItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호 if (cPluItem.CPI_DC_AMT > 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0192); return; } } //#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 start //신한포인트는 통신사 할인과 중복 가능 하도록 수정 //기존 #region 기존 /* // 통신사 제휴 할인 불가(2017.08.28) ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in aPayItem) { if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue; if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT && (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KTF || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_LGT || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_DOUBLE || //#20180413 웰컴카드 신규기능 추가 start,phj cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.WELCOMECARD || //#20180413 웰컴카드 신규기능 추가 end,phj cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_VIP)) { // 이미할인이 등록되어 있습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0669); return; } } */ #endregion 기존 //변경 #region 변경 // 통신사 제휴 할인 불가(2017.08.28) if (sMenuKey != PosKey.MENU_KEY.SHINHANCARD_POINT) { ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in aPayItem) { if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue; if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT && (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KTF || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_LGT || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_DOUBLE || //#20180413 웰컴카드 신규기능 추가 start,phj cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.WELCOMECARD || //#20180413 웰컴카드 신규기능 추가 end,phj cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_VIP)) { // 이미할인이 등록되어 있습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0669); return; } } } #endregion 변경 //#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 end //#14505 PB 신월곰달래 - 해피포인트 등록 후 현대M포인트 진입안되도록 수정요청 start,phj //카드 포인트 사용창 진입시 해피포인트 등록이 된 상태이면 안내 메세지 팝업 (예, 아니오) bool bHPCheck = false; ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) { bHPCheck = true; break; } } //#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 start //신한포인트는 해피포인트 적립과 중복 가능 하도록 수정 if (sMenuKey == PosKey.MENU_KEY.SHINHANCARD_POINT) { bHPCheck = false; } //#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 end if (bHPCheck == true) { //#20180410 메세지 오류 수정 start,phj //기존 //if (WinManager.QuestionMessage(POS_MESSAGE.GUIDE.MSG_0014) == false) //변경 if (WinManager.QuestionMessage(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0014)) == false) //#20180410 메세지 오류 수정 end,phj { return; } } //#14505 PB 신월곰달래 - 해피포인트 등록 후 현대M포인트 진입안되도록 수정요청 end,phj if (sMenuKey == PosKey.MENU_KEY.SAMSUNG_POINTS) sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAMSUNG_POINT, sMenuKey }); else if (sMenuKey == PosKey.MENU_KEY.WOORIMORE_POINTS) sRet = WinPay.ShowForm(new string[] { FormManager.FORM_WOORIMORE_POINT, sMenuKey }); else if (sMenuKey == PosKey.MENU_KEY.HYUNDAI_M_POINTS) sRet = WinPay.ShowForm(new string[] { FormManager.FORM_HYUNDAI_M_POINT, sMenuKey }); //*** MoonSeokWoo 2017.12.12 Add else if (sMenuKey == PosKey.MENU_KEY.SHINHANCARD_POINT) sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SINHANCARD_POINT, sMenuKey }); //*** MoonSeokWoo 2017.12.12 End if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 신용카드 결제 처리 /// private void PayCreditCard(string sMenuKey, string sInputData) { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { //WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다."); WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745); return; } //#20171227 인천공항 포스연동 end, phj try { string sRet = UserCom.RST_ERR; // ------------------------------------------------------------------------------------------- // 세브란스 직원식 상품 체크 // ------------------------------------------------------------------------------------------- sRet = SeveranceiTemCheck(sMenuKey); if (sRet != UserCom.RST_OK) return; // ------------------------------------------------------------------------------------------- // 신용카드 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CREDITCARD, sMenuKey, "", "", sInputData }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 현금 영수증 발행 /// private bool PayCashbill(string sMenukey) { double dCashBillAmt = 0; string sRet = UserCom.RST_ERR; //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { //WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745); return true; } //#20171227 인천공항 포스연동 end, phj try { if (m_cPosStatus.Mst.CntryDiv != ItemConst.CNTRY_DIV.KR) return true; // 한국에서만 가능(2017.05.26) if (PosMstManager.GetPosOption(POS_OPTION.OPT315) == "0") return true; // 현금영수증 업무 사용 여부(0:사용안함, 1:사용함) if (sMenukey == PosKey.MENU_KEY.CASH_APPROVAL) { //반품일경우 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return true; ////일반판매, 예약완료가 아닐 경우 //if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) != true) return; dCashBillAmt = m_cDataService.GetCashAmt(); if (dCashBillAmt > 0) { //부가세 계산 double dTax = m_cDataService.GetPaymentAmtVAT(dCashBillAmt); // 현금 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH_APPROVAL, sMenukey, dCashBillAmt.ToString(), dTax.ToString() }); if (sRet != UserCom.RST_OK) return false; } } else { // 수동 승인(거래후 현금수증) // 거래구분 설정 => 거래후 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.AFTER.CASH_RECEIPT; // 원거래 정보 설정 m_cTrnStatus.Head.OrgSaleDate = ""; m_cTrnStatus.Head.OrgPosNo = ""; m_cTrnStatus.Head.OrgTradeNo = ""; // 현금 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH_APPROVAL, sMenukey, "0", "0" }); if (sRet == UserCom.RST_OK) { // 거래 완료 처리 sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); } ////사용변수 초기화 m_cDataService.TranComplete(); m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE; } return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 삼성카드 제휴할인 /// private void PaySamsungFamilyCard(string sMenuKey) { try { string sRet = UserCom.RST_ERR; ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in aPayItem) { if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue; if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SAMSUNGCARD) { // 이미할인이 등록되어 있습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0669); return; } } if (m_cDataCommon.PayDcDuplicationCheck(ItemConst.TR_ITEM_ID.EMP_DC_ITEM, ItemConst.TR_ITEM_ID.EMP_DC.SAMSUNGCARD, true) == false) return; // 신용카드 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAMSUNG_SFC, sMenuKey }); if (sRet == UserCom.ERROR) return; //승인 요청 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 식권 처리 /// private void PayMealTicket(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; //기존 소스 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start // 돈통 오픈 처리 //m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end //#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_MEAL_TICKET, sMenuKey }); if (sRet != UserCom.RST_OK) return; //#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 상품권 처리 /// private void PayGift(string sMenuKey) { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; //기존소스 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start // 돈통 오픈 처리 //m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end //#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_GIFT, sMenuKey }); if (sRet != UserCom.RST_OK) return; //#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 start,phj /* // grayber@20180115 인천공항 VIP 라운지 start - VIP 라운지 폼 실행 /// /// 인천공항 VIP 라인지 처리 /// /// /// /// private string PayInCheonVipLounge(string sMenuKey, string sInputData) { string sRet = UserCom.RST_ERR; try { // grayber@20180116 VIP 라운지 옵션 처리 부분 제거 및 돈통 오픈 주석 처리 start //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start // 돈통 오픈 처리 //m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end // grayber@20180116 VIP 라운지 옵션 처리 부분 제거 및 돈통 오픈 주석 처리 end // 현금 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_AIRPORT_VIP_LOUNGE, sMenuKey, sInputData }); if (sRet != UserCom.RST_OK) return UserCom.RST_ERR; CheckSaleComplete(); // 결제완료 체크 } 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; } // grayber@20180115 인천공항 VIP 라운지 end */ //#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 end,phj //grayber@20180208 코레일 마일리지 입력 start - 폼 실행 추가 private string PayKorailMileage(string sMenuKey, string sInputData) { string sRet = UserCom.RST_ERR; try { // 코레일 마일리지 입력 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_KORAIL_MILEAGE, sMenuKey, sInputData }); if (sRet != UserCom.RST_OK) return UserCom.RST_ERR; CheckSaleComplete(); // 결제완료 체크 } 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; } //grayber@20180208 코레일 마일리지 입력 end // /// 결제 완료 체크 /// public string CheckSaleComplete() { string sRet = UserCom.RST_ERR; try { // 적립 예정 포인트 계산 ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { #region if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) { // 해피포인트 기본적립 대상 금액 획득 m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT); // 캠페인(해피포인트 적립) 설정 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // 적립예정포인트 cEtcItem.ETC_AMT = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0); //cEtcItem.ETC_AMT = m_cDataCommon.ExecTermCoopCmpPayDc(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, "", cEtcItem.AMT_ENTRY_08); // 적립예정 포인트 if (m_cTrnStatus.Head.AftSaveAddInfo != "") { if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0; } } // 해피포인트 예상적립 포인트 계산 중국 추가(2017.06.23) else if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA) { // 해피포인트 기본적립 대상 금액 획득 m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA); // 캠페인(해피포인트 적립) 설정 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // 적립예정포인트 cEtcItem.ETC_AMT = CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 2); if (m_cTrnStatus.Head.AftSaveAddInfo != "") { if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0; } } #endregion } // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 //더치페이 금액 체크! if (m_cPosStatus.Sale.DutchPayFlg == "2") { // 결제 금액 계산 처리 ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); if (alPayment.Count > 0) { int iRow = alPayment.Count - 1; Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayment[iRow]; if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPayItem.PAY_DTL_CD_05 == PosConst.PAY_DC_TYPE.PAY) m_cSaleComplete.DutchPayReceiptPrint(new string[] { "" }); //금액 더치페이 영수증 출력! - 결제일 경우! } } sRet = UserCom.RST_OK; // 결제 완료 체크 //#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 start // 기존 //if (m_cTrnStatus.Sale.RemainPayAmt == 0) // 변경 if ((m_cTrnStatus.Sale.RemainPayAmt == 0) || ((m_cTrnStatus.Sale.RemainPayAmt > 0) && (m_cPosStatus.Base.CmpCd.Equals("PCUS") && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG))) //#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 end { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { sRet = IncheonAireportPayClose(PosKey.MENU_KEY.INCHEON_AIRPORT); if (sRet == UserCom.RST_ERR) return sRet; } //#20171227 인천공항 포스연동 end, phj //#Rhee, 20180212 거스름돈 안내 팝업 start if( (m_cPosStatus.Base.CmpCd.Equals("PCUS") && (m_cPosStatus.Sale.ChangeCashAmt > 0))) { string sMsg = string.Format(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0013), Convert.ToString(m_cPosStatus.Sale.PayRecvedAmt), Convert.ToString(m_cPosStatus.Sale.ChangeCashAmt)); WinManager.ConfirmMessage(sMsg, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212)); } //#Rhee, 20180212 거스름돈 안내 팝업 start //낱개 반품 이나 판매 로스 일경우 결제 버튼 클릭시 현금 자동 결제 2016-12-05 문성진대리 요청 사항! if ((m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) || (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { // 결제완료 처리 sRet = ExecuteSaleComplete(); } else if (PosMstManager.GetPosOption(POS_OPTION.OPT322) != "1") { // 결제완료 처리 sRet = ExecuteSaleComplete(); } } return sRet; } 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 CheckSaleComplete(bool kiosk) { string sRet = UserCom.RST_ERR; try { // 적립 예정 포인트 계산 ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { #region if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) { // 해피포인트 기본적립 대상 금액 획득 m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT); // 캠페인(해피포인트 적립) 설정 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // 적립예정포인트 cEtcItem.ETC_AMT = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0); //cEtcItem.ETC_AMT = m_cDataCommon.ExecTermCoopCmpPayDc(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, "", cEtcItem.AMT_ENTRY_08); // 적립예정 포인트 if (m_cTrnStatus.Head.AftSaveAddInfo != "") { if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0; } } // 해피포인트 예상적립 포인트 계산 중국 추가(2017.06.23) else if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA) { // 해피포인트 기본적립 대상 금액 획득 m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA); // 캠페인(해피포인트 적립) 설정 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // 적립예정포인트 cEtcItem.ETC_AMT = CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 2); if (m_cTrnStatus.Head.AftSaveAddInfo != "") { if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0; } } #endregion } // 판매화면 사용안함(해피스테이션) //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) //cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 //더치페이 금액 체크! 사용안함(해피스테이션) //if (m_cPosStatus.Sale.DutchPayFlg == "2") //{ // // 결제 금액 계산 처리 // ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // if (alPayment.Count > 0) // { // int iRow = alPayment.Count - 1; // Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayment[iRow]; // if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPayItem.PAY_DTL_CD_05 == PosConst.PAY_DC_TYPE.PAY) // m_cSaleComplete.DutchPayReceiptPrint(new string[] { "" }); //금액 더치페이 영수증 출력! - 결제일 경우! // } //} sRet = UserCom.RST_OK; // 결제 완료 체크 //#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 start // 기존 //if (m_cTrnStatus.Sale.RemainPayAmt == 0) // 변경 if ((m_cTrnStatus.Sale.RemainPayAmt == 0) || ((m_cTrnStatus.Sale.RemainPayAmt > 0) && (m_cPosStatus.Base.CmpCd.Equals("PCUS") && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG))) //#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 end { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { sRet = IncheonAireportPayClose(PosKey.MENU_KEY.INCHEON_AIRPORT); if (sRet == UserCom.RST_ERR) return sRet; } //#20171227 인천공항 포스연동 end, phj //#Rhee, 20180212 거스름돈 안내 팝업 start if ((m_cPosStatus.Base.CmpCd.Equals("PCUS") && (m_cPosStatus.Sale.ChangeCashAmt > 0))) { string sMsg = string.Format(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0013), Convert.ToString(m_cPosStatus.Sale.PayRecvedAmt), Convert.ToString(m_cPosStatus.Sale.ChangeCashAmt)); WinManager.ConfirmMessage(sMsg, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212)); } //#Rhee, 20180212 거스름돈 안내 팝업 start //낱개 반품 이나 판매 로스 일경우 결제 버튼 클릭시 현금 자동 결제 2016-12-05 문성진대리 요청 사항! if ((m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) || (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { // 결제완료 처리 sRet = ExecuteSaleComplete(true); } else if (PosMstManager.GetPosOption(POS_OPTION.OPT322) != "1") { // 결제완료 처리 sRet = ExecuteSaleComplete(true); } } else // 거래금액과 상품금액 차이로(RemainAmt에 금액존재) 거래완료가 안된 경우 리턴 ERR로..2019.04.17 { return UserCom.ERROR; } //if (kiosk) //{ // // 결제완료 처리 // //sRet = ExecuteSaleComplete(true); // m_cTrnStatus.Head.OrderNo = m_cTableSvr.GetOrderNoForDb(); //} return sRet; } 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 ExecuteSaleComplete() { string sRet = UserCom.RST_ERR; string sDucthFloor = ""; //더치페이 후불용 층 백업 string sDucthTableNo = ""; //더치페이 후불용 테이블 번호 백업 string sHpSaveCompleteMsg = ""; try { if (m_cPosStatus.Sale.DutchPayFlg == "2") m_cPosStatus.Sale.DutchPayFlg = ""; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_END) { // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END; // 주문번호(대기번호) 등록 if (SetOrderNo() == false) { m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING; cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 return sRet; } //일반판매, 예약완료가 아닐 경우 if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) != true) { //적립, 현금 영수증 안함! } else { #region //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start //170811 dkshin 돈통 오픈 처리 시점 변경(현금영수증 전) // 돈통 오픈 처리 /* if (FinishTradeOpenDrawer() == true) { UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "OpenCashDrawer"); m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리 } */ //#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end // 현금 영수증 발행 if (PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL) == false) { m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING; m_cTrnStatus.Head.OrderNo = ""; cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 return sRet; } // 해피포인트 적립 완료 처리 CompleteHappyPointSave(); //// 현금 영수증 발행 //PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL); // 결제 고객 등록 체크 SetPayGuest("2"); cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 start, phj /* // 추후적립 초기화 Column.TR_ETC.DATA cEtcItemHP = null; ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)) { // 해피포인트 적립 완료시 추후적립 정보 초기화 m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; break; } } // 추가적립의 추후적립 불가시 초기화 if (m_cTrnStatus.Head.AftSaveAddDiv != "1") m_cTrnStatus.Head.AftSaveAddInfo = ""; // 1000원 이하 추후적립 안함. if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "") { m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; } */ //#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 end, phj // 해피포인트 적립 완료 안내 메시지 추출 ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if ((cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) || (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)) { //#20180821 해피포인트 고객이름 마스킹 start if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); } //#20180821 해피포인트 고객이름 마스킹 end sHpSaveCompleteMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0690), cEtcItem.HP_CUST_NAME, m_cPosStatus.Global.NumericTOCurrency(cEtcItem.ETC_AMT)); } } // #20170616, 해피앱 스탬프 Start //20171025 dkshin 전문 영수증번호 전거래의 영수증번호로 중복등록되는 문제 수정-> 거래 완료(PosSaleExecute) 후 처리 /*IHappyAppStamp m_cHappyAppStamp = (IHappyAppStamp)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HPAPP_STAMP); m_cTrnStatus.Sale.HappyAppMemNo = m_cHappyAppStamp.CheckHappyAppStamp(); if (m_cPosStatus.Base.TrainingFlag == "0" && // 운영모드 PosMstManager.GetPosOption(POS_OPTION.OPT327) == "1" && // 해피앱 스탬프 사용 m_cTrnStatus.Sale.HappyAppMemNo != "") // 해피앱 회원번호 존재(해피앱 고객) { // 해피앱 스탬프 등록 m_cHappyAppStamp.SetHappyAppStamp(); } */ // #20170616, 해피앱 스탬프 End #endregion } //상품권 판매 or 선불카드 판매 경우! if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.PREPAID && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.GIFT) { #region // 영수 캠페인 실행 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ExecuteCampaignPrint(new string[] { }); if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN) { // 온라인쿠폰 발행(중국) 실행 IPaymentUs cOnLineCpn = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.ONLINE_COUPON_PRT); cOnLineCpn.SetPayment(new string[] { }); } #endregion } //// 주문번호 등록 //SetOrderNo(); // Add, 2017.01.24 // 주방프린터 수동출력 처리 0:자동 1:수동(프린터선택) 2:수동(상품선택) //주방프린터는 자동으로 처리함 (해피스테이션) //MenualOrderKtchProcess(); // 테이블 거래 완료 처리 sRet = m_cTableSvr.CompleteSaleOrder(); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 더치페이면.... ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ArrayList ctmpSaleItem = new ArrayList(); if (m_cPosStatus.Sale.DutchPayFlg == "1") { #region //1.상품백업 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; cSaleItem.ORG_ITEM_SEQ = iRow; ctmpSaleItem.Add(cSaleItem.Clone()); } sDucthFloor = m_cTrnStatus.Head.FloorCd; sDucthTableNo = m_cTrnStatus.Head.TableNo; m_cPosStatus.Sale.PayingDutchFlag = "1"; #endregion } //결제완료 시점에 현금영수증 승인버튼 누르면 음성 플레이 되는 기능 --> 무조건 결제완료 시점에 플레이 되도록 수정! - #20180212 start,phj if ((m_cTrnStatus.Head.CmpCd == "PCKR") && //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj (PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1") && //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2")) { frmSaleMain fMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN); fMain.SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PHRASE_RECEIPT_INPUT, ""); } //결제완료 시점에 현금영수증 승인버튼 누르면 음성 플레이 되는 기능 --> 무조건 결제완료 시점에 플레이 되도록 수정! - #20180212 end,phj ((Form)cFormSaleMain).Refresh(); // ##########거래 완료 처리########## // sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return sRet; // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; // 거래 완료 후 초기화 처리 cFormSaleMain.DisplayInit(false, true); //cFormSaleMain.DisplayInit(true, true); frmSaleMain fSalMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN); fSalMain.SubPriorReadingVarClear(true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, true); // 상품등록 화면 표시 cFormSaleMain.ChangeSalePayMode(true); // 거래완료 로그 출력 UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "SaleDate : " + m_cPosStatus.Base.SaleDate + ", StoreNo : " + m_cPosStatus.Base.StoreNo + ", PosNo : " + m_cPosStatus.Base.PosNo + ", TranNo : " + m_cPosStatus.Base.TradeNo); // 해피포인트 적립 완료 안내메시지 표시 if (sHpSaveCompleteMsg != "") WinSale.ShowForm(new string[] { FormManager.FORM_HP_SAVE_COMPLETE_MSG, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0108), sHpSaveCompleteMsg }); //현금 알림 체크 if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT310), "0") != "0") { if (m_cPosStatus.Mst.CashAlarmAmt > m_cDataService.DoubleParse(PosMstManager.GetPosOption(POS_OPTION.OPT310))) { WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0325)); } } //#20180605 해피오더 개선 start - 20180618 m_cPosStatus.Sale.bPayCompleteYN = true; //#20180605 해피오더 개선 end - 20180618 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 더치페이면.... ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (m_cPosStatus.Sale.DutchPayFlg == "1") { #region ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < ctmpSaleItem.Count; iRow++) { #region Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)ctmpSaleItem[iRow]; cSaleItem.CANCEL_DIV = cSaleItem.DUTCH_PAY_CAN_DIV; cSaleItem.CANCEL_DIV_MAIN = cSaleItem.DUTCH_PAY_MAIN_CAN_DIV; cSaleItem.DUTCH_PAY_CAN_DIV = ""; cSaleItem.DUTCH_PAY_MAIN_CAN_DIV = ""; if (cSaleItem.DUTCH_PAY_SELQTY == cSaleItem.DUTCH_PAY_TOTQTY) { cSaleItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; cSaleItem.CANCEL_DIV_MAIN = PosConst.CANCEL_DIV.CANCEL; } else { cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_TOTQTY - cSaleItem.DUTCH_PAY_SELQTY; } if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL) { aSaleItem.Add(cSaleItem.Clone()); } #endregion } if (aSaleItem.Count > 0) { m_cTrnStatus.Head.FloorCd = sDucthFloor; m_cTrnStatus.Head.TableNo = sDucthTableNo; m_cPluService.ItemDcAllClear(true); m_cPluService.ItemAmountExeccute(true, true); //더치페이 호출! DutchPay("", "1"); } else { m_cPosStatus.Sale.DutchPayFlg = ""; m_cPosStatus.Sale.PayingDutchFlag = ""; } #endregion } if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Sale.DutchPayFlg == "") { //테이블 서비스 이면 판매화면 종료 처리 cFormSaleMain.SaleMainExit(); } //#20181016 메모리 사용량 로그남기기 start //20181108 주석처리 //m_cDataCommon.MemoryCheckLog(); //#20181016 메모리 사용량 로그남기기 end //if (m_cPosStatus.Base.DmbIf == "1") //{ // // 디지털메뉴보드 I/F // IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); // // 판매완료 // //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start // //기존 // //cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_END }); // //변경 // if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1") // { // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_END }); // } // cDigitalMenuBoard = null; // //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end //} 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; } //kiosk용 거래완료처리 2019.04.17(해피스테이션) public string ExecuteSaleComplete(bool kiosk) { string sRet = UserCom.RST_ERR; string sHpSaveCompleteMsg = ""; try { if (m_cPosStatus.Sale.DutchPayFlg == "2") m_cPosStatus.Sale.DutchPayFlg = ""; if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_END) { // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END; // 주문번호(대기번호) 등록 if (string.IsNullOrEmpty(m_cTrnStatus.Head.OrderNo)) { if (SetOrderNo() == false) { m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING; return sRet; } } //일반판매, 예약완료가 아닐 경우 if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) != true) { //적립, 현금 영수증 안함! } else { #region // 현금 영수증 발행 //해피스테이션에서는 중복 처리됨 2019.05.10 //if (PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL) == false) //{ // m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING; // m_cTrnStatus.Head.OrderNo = ""; // return sRet; //} // 해피포인트 적립 완료 처리 CompleteHappyPointSave(); //// 현금 영수증 발행 //PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL); // 결제 고객 등록 체크 //SetPayGuest("2"); // 해피포인트 적립 완료 안내 메시지 추출 --필요없음(해피스테이션) //ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); //foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) //{ // if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; // if ((cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) // || (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)) // { // //#20180821 해피포인트 고객이름 마스킹 start // if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); } // //#20180821 해피포인트 고객이름 마스킹 end // sHpSaveCompleteMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0690), // cEtcItem.HP_CUST_NAME, // m_cPosStatus.Global.NumericTOCurrency(cEtcItem.ETC_AMT)); // } //} #endregion } //상품권 판매 or 선불카드 판매 경우!(상품권 /선불 카드 없음 (해피스테이션) //if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND // && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.PREPAID && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.GIFT) //{ // #region // // 영수 캠페인 실행 // ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); // cCampaingMain.ExecuteCampaignPrint(new string[] { }); // if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN) // { // // 온라인쿠폰 발행(중국) 실행 // IPaymentUs cOnLineCpn = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.ONLINE_COUPON_PRT); // cOnLineCpn.SetPayment(new string[] { }); // } // #endregion //} // KtchOrderSheetToBillPrint(); // 테이블 거래 완료 처리 sRet = m_cTableSvr.CompleteSaleOrder(); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 더치페이면....없음(해피스테이션 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ArrayList ctmpSaleItem = new ArrayList(); //if (m_cPosStatus.Sale.DutchPayFlg == "1") //{ // #region // //1.상품백업 // ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // for (int iRow = 0; iRow < aSaleItem.Count; iRow++) // { // Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; // cSaleItem.ORG_ITEM_SEQ = iRow; // ctmpSaleItem.Add(cSaleItem.Clone()); // } // sDucthFloor = m_cTrnStatus.Head.FloorCd; // sDucthTableNo = m_cTrnStatus.Head.TableNo; // m_cPosStatus.Sale.PayingDutchFlag = "1"; // #endregion //} //폼호출 안함..(해피스테이션) //결제완료 시점에 현금영수증 승인버튼 누르면 음성 플레이 되는 기능 --> 무조건 결제완료 시점에 플레이 되도록 수정! - #20180212 start,phj //if ((m_cTrnStatus.Head.CmpCd == "PCKR") && // //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj // (PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1") && // //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj // (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2")) //{ // frmSaleMain fMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // fMain.SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PHRASE_RECEIPT_INPUT, ""); //} #region 비회원 적립예상포인트 구하기 2019.05.16 //비회원 적립예상포인트 구하기 2019.05.16 // 해피포인트 기본적립 대상 금액 획득 //var chkHappy = false; //ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); //foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) //{ // if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; // if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) // { // if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) // { // chkHappy = true; // break; // } // } //} //if (!chkHappy) //{ // var AfterSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT); // // 캠페인(해피포인트 적립) 설정 처리 // ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); // cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // // 적립예정포인트 // m_cTrnStatus.Head.SavingHpPoint = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(AfterSavePoint, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0); //} #endregion // ##########거래 완료 처리########## // sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return sRet; // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; // 거래완료 로그 출력 UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()" , "SaleDate : " + m_cPosStatus.Base.SaleDate + ", StoreNo : " + m_cPosStatus.Base.StoreNo + ", PosNo : " + m_cPosStatus.Base.PosNo + ", TranNo : " + m_cPosStatus.Base.TradeNo); // 해피포인트 적립 완료 안내메시지 표시(해피스테이션에서 막음 2019.04.22) //if (sHpSaveCompleteMsg != "") WinSale.ShowForm(new string[] { FormManager.FORM_HP_SAVE_COMPLETE_MSG, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0108), sHpSaveCompleteMsg }); //현금 알림 체크(현금 사용안함 (해피스테이션) //if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT310), "0") != "0") //{ // if (m_cPosStatus.Mst.CashAlarmAmt > m_cDataService.DoubleParse(PosMstManager.GetPosOption(POS_OPTION.OPT310))) // { // WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0325)); // } //} //#20180605 해피오더 개선 start - 20180618 m_cPosStatus.Sale.bPayCompleteYN = true; //#20180605 해피오더 개선 end - 20180618 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 더치페이면....더치페이 없음(해피스테이션) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //if (m_cPosStatus.Sale.DutchPayFlg == "1") //{ // #region // ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // for (int iRow = 0; iRow < ctmpSaleItem.Count; iRow++) // { // #region // Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)ctmpSaleItem[iRow]; // cSaleItem.CANCEL_DIV = cSaleItem.DUTCH_PAY_CAN_DIV; // cSaleItem.CANCEL_DIV_MAIN = cSaleItem.DUTCH_PAY_MAIN_CAN_DIV; // cSaleItem.DUTCH_PAY_CAN_DIV = ""; // cSaleItem.DUTCH_PAY_MAIN_CAN_DIV = ""; // if (cSaleItem.DUTCH_PAY_SELQTY == cSaleItem.DUTCH_PAY_TOTQTY) // { // cSaleItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; // cSaleItem.CANCEL_DIV_MAIN = PosConst.CANCEL_DIV.CANCEL; // } // else // { // cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_TOTQTY - cSaleItem.DUTCH_PAY_SELQTY; // } // if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL) // { // aSaleItem.Add(cSaleItem.Clone()); // } // #endregion // } // if (aSaleItem.Count > 0) // { // m_cTrnStatus.Head.FloorCd = sDucthFloor; // m_cTrnStatus.Head.TableNo = sDucthTableNo; // m_cPluService.ItemDcAllClear(true); // m_cPluService.ItemAmountExeccute(true, true); // //더치페이 호출! // DutchPay("", "1"); // } // else // { // m_cPosStatus.Sale.DutchPayFlg = ""; // m_cPosStatus.Sale.PayingDutchFlag = ""; // } // #endregion //} //테이블 서비스 없음(해피스테이션) //if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Sale.DutchPayFlg == "") //{ // //테이블 서비스 이면 판매화면 종료 처리 // cFormSaleMain.SaleMainExit(); //} //#20181016 메모리 사용량 로그남기기 start //20181108 주석처리 //m_cDataCommon.MemoryCheckLog(); //#20181016 메모리 사용량 로그남기기 end if (m_cPosStatus.Base.DmbIf == "1") { //// 디지털메뉴보드 I/F //IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); //if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1") //{ // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_END }); //} //cDigitalMenuBoard = null; try { var sUrl = m_cPosStatus.Base.DmbSvrIp; var sWorkType = "/api/ods"; Hashtable htRequest = new Hashtable(); Hashtable htDummy = new Hashtable(); string nowDate = DateTime.Now.ToString("yyyymmdd"); string nowTime = DateTime.Now.ToString("HHmmss"); htRequest.Add("cmpCode", m_cPosStatus.Base.CmpCd); htRequest.Add("brandCode",m_cPosStatus.Base.BrandCd); htRequest.Add("storeCode", m_cPosStatus.Base.StoreNo); htRequest.Add("deviceCode", ""); htRequest.Add("saleDiv", ""); htRequest.Add("saleDt", nowDate); htRequest.Add("saleTm", nowTime); htRequest.Add("soldDt", ""); htRequest.Add("soldTm", ""); htRequest.Add("saleResult", ""); htRequest.Add("posNo", ""); htRequest.Add("billNo", ""); htRequest.Add("beforeBillNo", ""); htRequest.Add("takeDiv", ""); htRequest.Add("waitNo", m_cTrnStatus.Head.OrderNo); htRequest.Add("totalPrice", ""); htRequest.Add("totalSalePrice", ""); htRequest.Add("totalService", ""); htRequest.Add("totalVat", ""); htRequest.Add("totalEnr", ""); htRequest.Add("itemName", ""); htRequest.Add("itemCount", ""); htRequest.Add("payType", ""); htRequest.Add("payAmount", ""); htRequest.Add("payPointUse", ""); htRequest.Add("payPointSave", ""); htRequest.Add("saleItemList", htDummy); htRequest.Add("salePayList", htDummy); Hashtable htResponse = null; Hashtable[] htReturn = null; int iRet = 0; string sResp = string.Empty; if ((iRet = m_cNetworkHttp.HttpJsonPOST_SendReceive(sUrl, sWorkType, htRequest, ref htResponse, ref sResp)) == BaseCom.OK) { htReturn = JsonConvert.DeserializeObject(sResp); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명) System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명)) System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)) ex.Message); } } 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; } /// /// 금액 더치페이 남은 금액 체크 /// /// private bool GetDutchPayRemain() { bool bRet = false; double dAvancePay = 0; try { // 결제 금액 계산 처리 ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); for (int iRow = 0; iRow < alPayment.Count; iRow++) { Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayment[iRow]; if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cPayItem.PAY_DTL_CD_05 != "" && cPayItem.PAY_DTL_CD_05 != "1") continue; // 받은금액 계산 처리 dAvancePay += cPayItem.PAY_AMT; } // 받을금액 if (m_cTrnStatus.Sale.DutchPayTotAmt > dAvancePay) { bRet = 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 bRet; } /// /// 주문번호등록 /// /// 2019-04-17 - 1997fx11 : 대기번호 출력 참조. public bool SetOrderNo() { // grayber@20180110 전자영수증 주문(대기)번호표 출력 start - string 선언 이동 // 선언 이동 string sRet = ""; // grayber@20180110 string 선언 이동 // grayber@20180110 전자영수증 주문(대기)번호표 출력 end try { //정상 && 일반 거래 일때만 처리! => 로스거래 주방출력 함(2017.05.25) if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { // Add, 2017.04.11, 후불-판매모드는 주문번호 자동채번 처리 (점별일련번호) if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT) { if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE || string.IsNullOrWhiteSpace(m_cTrnStatus.Head.OrderNo)) m_cTrnStatus.Head.OrderNo = m_cTableSvr.GetOrderNoForDb(); // 후불일 경우에도 판매모드에서는 대기번호 자동체번 안함(2017.05.24) if (m_cPosStatus.Sale.EtcOperateMode != PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE) return true; } if (PosMstManager.GetPosOption(POS_OPTION.OPT008) == "1") //대기번호 사용여부 { // 자동채번일 경우! if (PosMstManager.GetPosOption(POS_OPTION.OPT042) == "1") { m_cTrnStatus.Head.OrderNo = m_cDataCommon.GetWaitNoForDb(); } else { //sCardNo = GetHappyAppNo(); // Add, 2017.04.25, KPS => 주방출력 대상 상품이 존재 할 때만 대기번호 입력 // KDS => 무조건 대기번호 입력 var isGetOrderNo = false; if (PosMstManager.GetPosOption(POS_OPTION.OPT027) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT507) == "1") { // KDS => 무조건 대기번호 입력 isGetOrderNo = true; } //#20181024 대기(주문)번호표 출력 start /* else if (PosMstManager.GetPosOption(POS_OPTION.OPT432) == "1") { // 대기(주문)번호표 출력여부 => 무조건 대기번호 입력 isGetOrderNo = true; } */ //#20181024 대기(주문)번호표 출력 end else { // KPS => 주방출력 대상 상품이 존재 할 때만 대기번호 입력 isGetOrderNo = IsExistKtchItem(); } //isGetOrderNo = true; //지우자!!!! // Mod, 2017.04.25, KPS => 주방출력 대상 상품이 존재 할 때만 대기번호 입력 if (isGetOrderNo) { if (m_cTrnStatus.Sale.HappyBuzzMemNo != "" && m_cPosStatus.Mst.HappyBuzzUseYn == "1") { //해피버즈 처리! sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_HAPPY_BUZZ, PosKey.MENU_KEY.HAPPY_BUZ_REG, m_cTrnStatus.Sale.HappyBuzzMemNo }); if (sRet != UserCom.RST_ERR) { m_cTrnStatus.Head.OrderNo = sRet; } else { //실패시 일반 받기! sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.ORDERNO }); if (sRet != UserCom.RST_ERR) { //m_cTrnStatus.Head.OrderNo = sRet; var tmp = sRet.Split('|'); if (tmp.Length > 0) m_cTrnStatus.Head.OrderNo = tmp[0]; if (tmp.Length > 1) m_cTrnStatus.Sale.MenualOrderMemo = tmp[1]; } else return false; } } else { sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.ORDERNO }); if (sRet != UserCom.RST_ERR) { //m_cTrnStatus.Head.OrderNo = sRet; var tmp = sRet.Split('|'); if (tmp.Length > 0) m_cTrnStatus.Head.OrderNo = tmp[0]; if (tmp.Length > 1) m_cTrnStatus.Sale.MenualOrderMemo = tmp[1]; } else return false; } } // grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 주문(대기번호) 입력 창 처리 // 추가 // grayber@20180122 전자영수증 주문(대기)번호표 출력 start - 브랜드구분을 회사구분으로 변경, if -> else if 변경 //if (m_cPosStatus.Base.BrandDiv.Equals(ItemConst.CORP_DIV.BR) == true ) // 기존 else if (m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) == true ) // 변경 // grayber@20180122 전자영수증 주문(대기)번호표 출력 start { sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.ORDERNO }); if (sRet != UserCom.RST_ERR) { //m_cTrnStatus.Head.OrderNo = sRet; var tmp = sRet.Split('|'); if (tmp.Length > 0) m_cTrnStatus.Head.OrderNo = tmp[0]; if (tmp.Length > 1) m_cTrnStatus.Sale.MenualOrderMemo = tmp[1]; } else return false; } // grayber@20180110 전자영수증 주문(대기)번호표 출력 end } } //else if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE) //{ // // 후불-판매모드 일때 // //m_cTrnStatus.Head.OrderNo = m_cDataCommon.GetWaitNoForDb(); // m_cTrnStatus.Head.OrderNo = m_cTrnStatus.Head.TradeNo; //} } 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; } /// /// 주방출력(KPS) 대상 상품 존재여부 /// /// private bool IsExistKtchItem() { try { // 일반주문 일때 var lstktchItems = new List(); var pluItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA item in pluItems) { if (item.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) continue; if (string.IsNullOrWhiteSpace(m_cTrnStatus.Head.FloorCd) == false) lstktchItems.Add(string.Format("'{0}{1}{2}'", m_cTrnStatus.Head.FloorCd, item.SUB_SHOP_CD, item.ITEM_PLU_CD)); lstktchItems.Add(string.Format("'{0}{1}{2}'", "999", item.SUB_SHOP_CD, item.ITEM_PLU_CD)); } if (lstktchItems.Count == 0) return false; var fmt = "SELECT A.SUB_STOR_CD, A.ITEM_CD, COUNT(B.KTCH_SYS_CD) KTCH_CNT \n" + " FROM MST_KTCH_DEVICE_ITEM A WITH(NOLOCK) \n" + " , MST_KTCH_DEVICE B WITH(NOLOCK) \n" + " WHERE A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD \n" + " AND CASE WHEN A.KTCH_SYS_CD = '99' THEN '1' ELSE A.SUB_STOR_CD + A.KTCH_SYS_CD END \n" + " = CASE WHEN A.KTCH_SYS_CD = '99' THEN '1' ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n" + " AND A.CMP_CD = '{0}' \n" + " AND A.STOR_CD = '{1}' \n" + " AND A.FLOOR_CD + A.SUB_STOR_CD + A.ITEM_CD IN ({2}) \n" + " AND A.USE_YN = '{3}' \n" + " AND B.USE_YN = '{3}' \n" + " AND B.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n" + " AND B.KTCH_SYS_CD <> '99' \n" + " GROUP BY A.SUB_STOR_CD, A.ITEM_CD " ; var sql = string.Format(fmt, m_cPosStatus.Base.CmpCd , m_cPosStatus.Base.StoreNo , string.Join(",", lstktchItems.ToArray()) , PosConst.MST_USE_YN.YES); DataTable dt = m_cMstService.Select(new string[] { sql }); if (dt == null || dt.Rows.Count == 0) return false; return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } } private string GetHappyAppNo() { string sCardNo = ""; try { ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; if (cEtcItem.ETC_WAY_CD != ItemConst.TR_ITEM_ID.ETC_INFO_ITEM || cEtcItem.ETC_DTL_CD_01 != ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) continue; if (cEtcItem.OCCUR_ENTRY_12 == "Y") { sCardNo = cEtcItem.CanFiller3; } break; } if (sCardNo == "") { ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem) { if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cPayItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM || cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT) continue; if (cPayItem.OCCUR_ENTRY_12 == "Y") { sCardNo = cPayItem.CanFiller3; } break; } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sCardNo; } /// /// 해피포인트/OCB 적립 완료 처리 /// public void CompleteHappyPointSave() { string sRet; try { // 반품모드 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return; // 상품권 판매 or 선불카드 판매 if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT) return; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // OKCASHBACK 포인트 적립 처리 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // OKCASHBACK 적립 if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { if (cEtcItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.CAT_TERMINAL) { // OCB 적립 완료시 추후적립 정보 초기화 m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; return; } // OCB 포인트 적립 완료 처리 IPaymentExpUs cOcbPntSave = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PNT_OCB_SAVE); sRet = cOcbPntSave.CompletePayment(new string[] { }); if (sRet == UserCom.RST_OK) { // OCB 적립 완료시 추후적립 정보 초기화 m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; return; } } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 해피 포인트 적립 처리 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "0") return; // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함(한국), 2:사용함(중국)) // 해피포인트 카드 등록 여부 체크 Column.TR_ETC.DATA cEtcItemHP = null; ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)) { cEtcItemHP = cEtcItem; break; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 해피포인트 적립 금액 계산 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 해피포인트 기본적립 대상 금액 획득 if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "2") // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함(한국), 2:사용함(중국)) { m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA); // 캠페인(해피포인트 적립) 설정 처리 //ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); //cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); if (m_cTrnStatus.Head.AftSavePoint < 1 && m_cTrnStatus.Head.AftSaveAddInfo == "") { if (cEtcItemHP != null) cEtcItemHP.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; } else { IPaymentUs cHappyPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT_SAVE_CHINA); if (cEtcItemHP != null && PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") // HP 자동적립 처리(0:사용안함, 1:사용함) { // 해피포인트 적립 완료 처리 sRet = cHappyPoint.SetPayment(new string[] { PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA, cEtcItemHP.OCCUR_ENTRY_05, cEtcItemHP.OCCUR_ENTRY_01, m_cTrnStatus.Head.AftSavePoint.ToString(), "1" }); if (sRet != UserCom.RST_OK) { ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); // 기타 내역 받아 오기 foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) { cEtcItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; } } } } else { // 거래완료시 HP미등록 적립화면 사용여부(0:사용안함, 1:사용함)(2017.06.05) //해피스테이션 삭제 2019.04.22 //if (cEtcItemHP != null || PosMstManager.GetPosOption(POS_OPTION.OPT047) != "0") //{ // // 해피포인트 카드 등록 화면 진행 // sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" }); //} } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 적립 완료 후 처리 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //// 스템프 캠페인 미적용 정보 삭제 //cCampaingMain.SetCampaignHappyStampInfo("", "", ""); // 적립 완료 시 추후 적립 정보 삭제 cEtcItemHP = null; foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)) { // 해피포인트 적립 완료시 추후적립 정보 초기화 m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; cEtcItemHP = cEtcItem; break; } } // 추가적립의 추후적립 불가시 초기화 if (m_cTrnStatus.Head.AftSaveAddDiv != "1") m_cTrnStatus.Head.AftSaveAddInfo = ""; // 1원 이하 추후적립 안함. if (m_cTrnStatus.Head.AftSavePoint < 1 && m_cTrnStatus.Head.AftSaveAddInfo == "") { m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; } } else { m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT); // 캠페인(해피포인트 적립) 설정 처리 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // 적립 대상금액 없음 if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "") { if (cEtcItemHP != null) cEtcItemHP.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; } else { IPaymentExpUs cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT); //MoonSeokWoo 2017.11.15 Edit //자동적립이고 HP 추가 적립 화면 사용을 하는 경우 HP 등록이 되어 있으면 추가 적립화면 체크가 되어 있어도 자동적립 , //자동적립이고 HP 추가 적립 화면 사용을 하는 경우 HP 등록이 되어 있지 않으면 추가 적립 화면 활성화 //if (cEtcItemHP != null && PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") // HP 자동적립 처리(0:사용안함, 1:사용함) if (PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") // HP 자동적립 처리(0:사용안함, 1:사용함) { if (PosMstManager.GetPosOption(POS_OPTION.OPT047) != "0" && cEtcItemHP == null) { //sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" }); } //MoonSeokWoo 2017.11.15 Edit //else if (cEtcItemHP != null && PosMstManager.GetPosOption(POS_OPTION.OPT047) == "0") else if (cEtcItemHP != null) { // 해피포인트 적립 완료 처리 sRet = cHappyPoint.CompletePayment(new string[] { }); if (sRet != UserCom.RST_OK) { ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); // 기타 내역 받아 오기 foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) { cEtcItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; } } } } } else { // 거래완료시 HP미등록 적립화면 사용여부(0:사용안함, 1:사용함)(2017.06.05) //해피스테이션 삭제 2019.04.22 //if (PosMstManager.GetPosOption(POS_OPTION.OPT047) != "0") //{ // // 해피포인트 카드 등록 화면 진행 // sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" }); //} } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 적립 완료 후 처리 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 스템프 캠페인 미적용 정보 삭제 cCampaingMain.SetCampaignHappyStampInfo("", "", ""); // 적립 완료 시 추후 적립 정보 삭제 cEtcItemHP = null; foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)) { // 해피포인트 적립 완료시 추후적립 정보 초기화 m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; cEtcItemHP = cEtcItem; break; } } // 추가적립의 추후적립 불가시 초기화 if (m_cTrnStatus.Head.AftSaveAddDiv != "1") m_cTrnStatus.Head.AftSaveAddInfo = ""; // 1000원 이하 추후적립 안함. if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "") { m_cTrnStatus.Head.AftSavePoint = 0; m_cTrnStatus.Head.AftSaveAddInfo = ""; } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 디지털메뉴보드 I/F ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start //기존 //if (m_cPosStatus.Base.DmbIf == "1") //변경 //if (m_cPosStatus.Base.DmbIf == "1" && // PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1") ////#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end //{ // if (cEtcItemHP != null) // { // // 디지털메뉴보드 I/F // IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); // // 포인트적립 // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.POINT_INFO // 전문 구분 // , "HPC" // POINT_DIV // , cEtcItemHP.OCCUR_ENTRY_12 // APP_DIV (Y:HPC APP, N:그 외) // , "2" // DIV(1:조회, 2:적립, 3:할인, 4:사용 ...) // , "" // AMOUNT(포인트사용금액) // , cEtcItemHP.AMT_ENTRY_01.ToString() // POINT(적립,할인,사용포인트) // , cEtcItemHP.AMT_ENTRY_05.ToString() // R_POINT(잔여포인트) // , "" // // , cEtcItemHP.OCCUR_ENTRY_01 // CARD_NO(마스킹 된 카드 번호) // , "" // CUST_NAME(고객명) // , "" }); // CAMPAIGN_INFO // } //} } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } ///// ///// 해피포인트 적립 완료 처리 ///// //public void CompleteHappyPointSave() //{ // string sRet; // try // { // if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "0") return; // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함) // if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return; // // 상품권 판매 or 선불카드 판매 경우! // if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT) return; // IPaymentExpUs cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT); // // 해피포인트 카드 등록 여부 체크 // Column.TR_ETC.DATA cEtcItemHP = null; // ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); // foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc) // { // if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) // { // cEtcItemHP = cEtcItem; // break; // } // } // if (cEtcItemHP == null) // { // // 해피포인트 사용 해피포포인트 적립 처리 // ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // foreach (Column.TR_PAYMENT.DATA cPayItem in alPayment) // { // if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM || cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT) continue; // // 해피포인트 조회 // string[] saRecvdData = null; // sRet = cHappyPoint.SearchPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0" }, ref saRecvdData); // if (sRet == UserCom.RST_OK) // { // // 해피포인트 카드 등록 처리 // sRet = cHappyPoint.SetPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0", cPayItem.OCCUR_ENTRY_23 }); // if (sRet == UserCom.RST_OK) // { // cEtcItemHP = (Column.TR_ETC.DATA)cHappyPoint.GetPayment(new string[] { }); // break; // } // } // } // } // // 해피포인트 카드가 등록되어 있지 않다면 제휴 카드 체크 // bool bCoopCardExist = false; // if (cEtcItemHP == null) // { // // 제휴카드 해피포포인트 적립 처리 // ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // foreach (Column.TR_PAYMENT.DATA cPayItem in alPayment) // { // if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; // if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.CREDITCARD_ITEM || cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD) continue; // // 제휴카드 체크 // if (cPayItem.PAY_DTL_CD_03 != "M") // { // // 해피포인트 제휴카드 체크 // DataTable dtCardInfo = m_cMstPayDcService.Select(new string[] { PosMst.MST_CARD_PREFIX.TABLE_NAME, cPayItem.OCCUR_ENTRY_01.Substring(0, 6), "H" }); // if (dtCardInfo != null && dtCardInfo.Rows.Count > 0) // { // foreach (DataRow dr in dtCardInfo.Rows) // { // int nLoc = CmUtil.GetDataRowInt(dr, PosMst.MST_CARD_PREFIX.DATA.LOC); // string sCheckValue = CmUtil.GetDataRowStr(dr, PosMst.MST_CARD_PREFIX.DATA.CHECK_VAL).Trim(); // if (nLoc >= 33 && sCheckValue != "") // { // if (cPayItem.OCCUR_ENTRY_23 != "" && cPayItem.OCCUR_ENTRY_23.Substring(33 - nLoc).StartsWith(sCheckValue) == true) // { // bCoopCardExist = true; // } // } // else // { // bCoopCardExist = true; // } // if ( bCoopCardExist == true ) break; // } // } // } // // 마이원카드 이거나 제휴카드 이면 // if (cPayItem.PAY_DTL_CD_03 == "M" || bCoopCardExist == true) // { // // 해피포인트 조회 // string[] saRecvdData = null; // sRet = cHappyPoint.SearchPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0" }, ref saRecvdData); // if (sRet == UserCom.RST_OK) // { // // 해피포인트 카드 등록 처리 // sRet = cHappyPoint.SetPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0", cPayItem.OCCUR_ENTRY_23 }); // if (sRet == UserCom.RST_OK) cEtcItemHP = (Column.TR_ETC.DATA)cHappyPoint.GetPayment(new string[] { }); // } // } // } // } // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // 해피포인트 적립 금액 계산 // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // 해피포인트 기본적립 대상 금액 획득 // m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT); // if (cEtcItemHP == null) // { // //if (m_cTrnStatus.Head.AftSavePoint == 0 && m_cTrnStatus.Head.AftSaveAddInfo == "") return; // 적립 대상금액 없음 // if (PosMstManager.GetPosOption(POS_OPTION.OPT029) != "0") // HP 적립확인 처리(0:사용안함, 1:사용함) // { // // 해피포인트 카드 등록 화면 진행 // sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" }); // } // } // else // { // // 캠페인(해피포인트 적립) 설정 처리 // ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); // cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null); // if (m_cTrnStatus.Head.AftSavePoint == 0 && cEtcItemHP.HP_ADD_ACCUME == "") // 적립 대상금액 없음 // { // cEtcItemHP.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL; // return; // } // if (PosMstManager.GetPosOption(POS_OPTION.OPT030) != "1") // HP 자동적립 처리(0:사용안함, 1:사용함) // { // // 해피포인트 카드 등록 화면 진행 // sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" }); // } // else // { // // 해피포인트 적립 완료 처리 // sRet = cHappyPoint.CompletePayment(new string[] { }); // } // } // } // catch (Exception ex) // { // WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); // } //} private bool ItemSearch() { bool bRet = false; try { //충전, 판매 거래 경우 아닌 경우 만 사용 가능! if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == true) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364); } else { string sLossCode = string.Empty; sLossCode = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_ITEM_SEARCH }); //코드 받아 오기 if (sLossCode != UserCom.RST_ERR) { string[] aParam = sLossCode.Split(new string[] { "^" }, StringSplitOptions.None); if (aParam.Length > 0) { for (int iRow = 0; iRow < aParam.Length; iRow++) { if (string.IsNullOrEmpty(aParam[iRow]) == false) RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + aParam[iRow], ""); } } } } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 직전 영수증 발행 /// /// private bool LastDealPrint() { bool bRet = false; try { string sRet = m_cSaleComplete.PosSaleLastRePrint(new string[] { }); if (sRet == UserCom.RST_OK) { bRet = true; } else { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0003); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 예약 등록 /// /// private bool RegSaleReservations() { bool bRet = false; try { // 판매LOSS 셋팅 if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) { string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RESERVATION_REG }); if (sRet != UserCom.RST_OK) return false; ArrayList alReservedCustInfo = (ArrayList)StateObject.GetItemObject(Column.TR_RESERV_INFO.ITEM); if (alReservedCustInfo.Count == 0) { //에러 return false; } else { Column.TR_RESERV_INFO.DATA clReservedCustInfo = (Column.TR_RESERV_INFO.DATA)alReservedCustInfo[0]; m_cTrnStatus.Head.ReserveNo = clReservedCustInfo.RESERV_NO; m_cTrnStatus.Head.ReserveYmd = clReservedCustInfo.RESERV_DT; } m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayInit(false, true); bRet = 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 bRet; } /// /// 예약 결제 등록 /// /// private void RegPayReservations() { try { string sRet = UserCom.RST_ERR; if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; //예약 완료일때는 등록 할 수 없음 if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) { //예약 완료 거래에서는 등록 할 수 없습니다 WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0639); return; } IPaymentUs m_ReservedPay = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.RESERVED_PAY); sRet = m_ReservedPay.SetPayment(new string[] { m_cTrnStatus.Sale.RemainPayAmt.ToString() }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 예약 결제 완료 /// /// private bool RegSaleReservedFinish() { bool bRet = false; try { //정상 거래 인지 체크 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) { string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RESERVATION_FNS }); if (sRet != UserCom.RST_OK) { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 cFormSaleMain.DisplayInit(false, true); return false; } // 상품 내역 불러오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count > 0) { // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(false, false); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE; m_cDataService.UpdatePayAmount(); ExecuteSaleMainProcess(PosKey.MENU_KEY.PAYMENTS, "", "", ""); } } else { //판매 거래에서만 가능합니다. } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// TakeInOut /// /// private bool SetTakeInOut() { try { if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT304), "1") == "0") { //해당 기능은 POS 옵션에서 미사용으로 되어 있습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0414); return false; } //Take In/Out string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_TAKE_IN_OUT }); if (sRet.Equals(UserCom.RST_OK)) { ISalePluItemUs m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); m_cPluService.ItemAmountExeccute(true, true); IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; //cFormSaleMain.DisplayInit(false, true); cFormSaleMain.DisplayItem(1, false); //cFormSaleMain.DisplayItem(0, false); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } /// /// 영수증 재발행 /// /// private bool SaleReReceiptRePrint() { try { // 영수증 재발행 시 프린터 데몬 Stop / Start(2017.09.04) //#20180329 프린터 간헐적 미출력 증상 수정 start //출력 할때 마다 open, close 하는 부분 한번만 하도록 수정 //기존 /* if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232) { IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER); cPrinterDaemon.StopPrinterDaemon(); System.Threading.Thread.Sleep(300); cPrinterDaemon.StartPrinterDaemon(); } */ //변경 #if(PRT_OPENCLOSE) //프린터 포트 동작 변경시 #else //#20180530 영수증 재발행시 프린터 데몬 stop 기능 주석 start /* if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232) { IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER); cPrinterDaemon.StopPrinterDaemon(); System.Threading.Thread.Sleep(300); cPrinterDaemon.StartPrinterDaemon(); } */ //#20180530 영수증 재발행시 프린터 데몬 stop 기능 주석 end #endif //#20180329 프린터 간헐적 미출력 증상 수정 end // string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RECEIPT_REPRINT, "SALE" }); var arg = m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE ? "" : "SALE"; string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RECEIPT_REPRINT, arg }); if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE) return true; if (sRet != UserCom.RST_OK) { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 cFormSaleMain.DisplayInit(false, true); return false; } // 상품 내역 불러오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count > 0) { // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } /// /// 교통카드 조회 /// private void SchTMoney(string sMenuKey) { try { string sRet = UserCom.RST_ERR; // 신용카드 화면 진행 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_TMONEY_SEARCH, sMenuKey }); if (sRet != UserCom.RST_OK) return; //승인 요청 처리 CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 영수증 반품 /// /// private bool SaleRefundReceipt() { try { string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RETURN_RECEIPT }); if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE) return true; if (sRet != UserCom.RST_OK) { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 cFormSaleMain.DisplayInit(false, true); return false; } // 상품 내역 불러오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count > 0) { // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 수정 고객수 /// /// private bool EditCustCnt() { bool bRet = false; try { // 고객수 입력 if (PosMstManager.GetPosOption(POS_OPTION.OPT004) == "0") { //옵션 미사용 WinManager.ErrorMessage(string.Format("{0}({1})", MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0414), POS_OPTION.OPT004)); } else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) != "2" && PosMstManager.GetPosOption(POS_OPTION.OPT033) != "3") { //옵션 미사용 WinManager.ErrorMessage(string.Format("{0}({1})", MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0414), POS_OPTION.OPT033)); } else { if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "2") //상세고객수 { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "" }); } else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "3") //고객수 { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.GUEST_CNT }); if (sRet != UserCom.RST_ERR) { m_cTrnStatus.Head.CustCnt = CmUtil.IntParse(sRet); } } bRet = 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 bRet; } #region 세브란스 직원식 상품 등록 체크 /// /// 세브란스 직원식 상품 등록 체크 /// /// /// public string SeveranceiTemCheck(string sMenuKey) { string sRet = UserCom.RST_ERR; try { // ------------------------------------------------------------------------------------------- if (sMenuKey != PosKey.MENU_KEY.SEVERANCE_PAYMENTS && sMenuKey != PosKey.MENU_KEY.OTHER_PAYMENTS) { if (PosMstManager.GetPosOption(POS_OPTION.OPT034) == "1") //세브란스 일 경우 { ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); m_cTrnStatus.Sale.SetSeveranceiTemUse = false; for (int iLoop = 0; iLoop < aSaleItem.Count; iLoop++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iLoop]; if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소 if (cSaleItem.SEVERANCE_MENU_DIV == "1" && cSaleItem.NONSALES_RSN_CD == "0") { // 세브란스 직원식 상품 존재 여부 m_cTrnStatus.Sale.SetSeveranceiTemUse = true; break; } } if (m_cTrnStatus.Sale.SetSeveranceiTemUse == true && m_cTrnStatus.Sale.SetSeveranceNormalPay != true) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0265); return sRet; } } } 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; } #endregion /// /// 해피포인트 추후 적립 /// /// private bool HappyPointAfterSave() { try { string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPP_APPROVAL_LATER }); if (sRet != UserCom.RST_OK) return false; return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 단골매장등록 /// /// private bool HappyPointRegularCust() { try { string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_HPP_REGULAR_CUST }); if (sRet != UserCom.RST_OK) return false; return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 배달(콜센터, 배달의민족) 등록 처리 /// /// private void PayOrderDelivery(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE) return; IPaymentUs cPaySvr = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SALEDELIVERY); sRet = cPaySvr.SetPayment(new string[] { sMenuKey }); if (sRet != UserCom.RST_OK) return; //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(1, false); CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 수동 돈통 오픈 /// private void OpenManualCashdrawer() { try { if (m_cPosStatus.Base.TrainingFlag == "1") //연습모드이면... { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0491); } else { m_cSaleComplete.OpenManualCashdrawer(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 해피포인트 현황 조회 /// private void HappyBuzzSearch() { try { WinBasic.ShowForm(new string[] { FormManager.FORM_HAPPY_BUZZ, PosKey.MENU_KEY.HAPPY_BUZ_SEARCH, "" }); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 온라인쿠폰(중국) /// private void PayOnLineCoupon(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; if (sMenuKey == PosKey.MENU_KEY.ONLINE_COUPONS) { // 온라인쿠폰 등록 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_ONLINE_COUPON, sMenuKey }); if (sRet != UserCom.RST_OK) return; //// 판매화면 //IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); //cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) CheckSaleComplete(); // 결제완료 체크 } else { // 온라인쿠폰 조회 sRet = WinSale.ShowForm(new string[] { FormManager.FORM_PAY_ONLINE_COUPON_SCH, sMenuKey }); if (sRet != UserCom.RST_OK) return; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 수동주방출력처리 /// /// /// 주방프린터 수동출력 처리 0:자동 1:수동(프린터선택) 2:수동(상품선택) /// public void MenualOrderKtchProcess() { try { //#20171020 log 추가 UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "주방프린트사용여부 : " + PosMstManager.GetPosOption(POS_OPTION.OPT506)); // 주방프린트 사용(0 : 미사용, 1 : 사용) if (PosMstManager.GetPosOption(POS_OPTION.OPT506) != "1") return; string arg = string.Empty; switch (PosMstManager.GetPosOption(POS_OPTION.OPT425)) { case "1": arg = FormManager.FORM_MENUAL_ORDER_KPS; break; case "2": arg = FormManager.FORM_MENUAL_ORDER_ITEM; break; default: return; } WinBasic.ShowForm(new string[] { arg }); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 주문내역서 출력 /// /// private bool OrderBillPrint() { try { ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alPluItem.Count == 0) return false; // 주문 내역서 출력 처리 ISaleCompleteUs cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); string sReturn = cSaleComplete.ExecuteOrderBillReceipt(); 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; } /// /// ServiceCharge 등록 /// /// private bool RegServiceChrge(string sFuncCode) { try { if (m_cPosStatus.Mst.SeriveFreeApplyDiv != ItemConst.SERVICE_CHARGE_APPLY_DIV.NONE) { //점포 마스터에 봉사료 적용대상 구분이 적용 안함으로 되어 있어야 사용 가능합니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0629); return false; } string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_SERVICE_CHARGE, sFuncCode }); if (sRet != UserCom.RST_OK) return false; m_cDataService.UpdatePluAmount(true); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시 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 void KtchOrderSheetToBillPrint() { try { // 주방장치 출력여부 확인 if (PosMstManager.GetPosOption(POS_OPTION.OPT506) != "1") return; // 영수증프린터 사용여부 확인 if (m_cDevStatus.Printer.UseYn == false) return; // Mod, 2017.04.10, // KPS 데몬실행여부 확인 //if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && // m_cPosStatus.Base.PosCommunicationType != PosConst.MAIN_POS_DIV.MAIN_POS) return; // 주방프린터 오류코드 취득 및 초기화 //잠시주석 2019.04.25 string ktchErrorCode = m_cPosStatus.Sale.KtchPrintErrorCode; //if (string.IsNullOrWhiteSpace(ktchErrorCode)) return; m_cPosStatus.Sale.KtchPrintErrorCode = string.Empty; string ret = UserCom.RST_ERR; // 주방프린터와 영수증프린터가 동일장치의 경우 주문서 출력 ret = m_cOrderSheetSvr.Execute(new string[] { "ORDER_SHEET" }); if (ktchErrorCode.StartsWith("XXXX")) { if (ret != UserCom.RST_OK) m_cPosStatus.Sale.KtchPrintErrorCode = ktchErrorCode; return; } // 주방프린터 오류 시 영수증프린터에 주문서 출력 var msg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0642); var tmp = ktchErrorCode.Split('|'); if (tmp.Length >= 3) { var err = string.Empty; //switch (tmp[0]) //{ // case "0001": err = "(Printer open failed)"; break; // case "0002": err = "(Printer open failed)"; break; // case "0003": err = "(Printer power off)"; break; // case "0004": err = "(No paper)"; break; // case "0005": err = "(Printer cover open)"; break; //} msg += string.Format("\n#Kitchen Printer No. [{0}] {1} {2})", tmp[1], tmp[2], err); } // 주방프린터 에러 시 팝업 띄우지 않고 메인에서 무조건 출력(20170520) //if (WinManager.QuestionMessage(msg) == false) //{ // WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0643); // m_cOrderSheetSvr.Execute(new string[] { "CANCEL_BILLPRT" }); // return; //} ret = m_cOrderSheetSvr.Execute(new string[] { "ORDER_REPRINT" }); if (ret != UserCom.RST_OK) { m_cPosStatus.Sale.KtchPrintErrorCode = ktchErrorCode; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 베트남 신용카드(VIP POINT) - 프리픽스 캠페인 적용 /// /// private bool PayVipPoint(string sFuncCode) { try { string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_VIP_POINT, sFuncCode }); if (sRet != UserCom.RST_OK) return false; CheckSaleComplete(); // 결제완료 체크 return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 선택 상품 할인 /// /// private bool MultiItemDc(string sFuncCode) { try { string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_MULTI_DCITEM, sFuncCode }); //if (sRet != UserCom.RST_OK) return false; // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 판매 대기중 기능키 판매일자 체크 /// /// private bool WaitSaleDataCheck(string sMenuKey) { try { bool bTradeCheck = false; switch (sMenuKey) { //체크 case PosKey.MENU_KEY.GIFT_SALE: // 상품권판매 case PosKey.MENU_KEY.PREPAID_CARD: // 선불카드판매 case PosKey.MENU_KEY.RETURN_ITEM: // 낱개반품 case PosKey.MENU_KEY.SALE_LOSS: // 판매로스 case PosKey.MENU_KEY.CASH_APPROVAL_LATER: // 사후 현금영수증 case PosKey.MENU_KEY.LAST_DEAL_PRINT: // 직전영수증 출력 case PosKey.MENU_KEY.RESERVATIONS_REGISTER: // 예약등록 case PosKey.MENU_KEY.RESERVATION_COMPLETED: // 예약완료 case PosKey.MENU_KEY.HP_GIFT_CHARGED: // 해피 기프트 충전 case PosKey.MENU_KEY.RETURN_RECEIPT: // 영수증 반품 case PosKey.MENU_KEY.HPP_APPROVAL_LATER: // 추후적립 case PosKey.MENU_KEY.HAPPY_ORDERS: // 해피오더 case PosKey.MENU_KEY.HP_REGULAR_CUST: // 단골매장등록 case PosKey.MENU_KEY.ORDER_COMPLETED: // 주문완료 bTradeCheck = true; break; } if (bTradeCheck == true) { // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { //#13342 개점/마감시간 허용 시간 제한 start, phj //기존 /* if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } */ //변경 IDataCommonUs m_cMstCmm = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); string sOpenTime = string.Empty; sOpenTime = m_cMstCmm.MstCmmSearch("T0032", "1"); //POS 개점 필수시간 if (sOpenTime != "") { if (CmUtil.LongParse(System.DateTime.Now.ToString("HHMM")) > CmUtil.LongParse(sOpenTime)) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } else { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } //#13342 개점/마감시간 허용 시간 제한 end, phj } } } 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 true; } /// /// 생일초 계산 /// /// /// private bool BrithDayCandle(string sFuncCode) { try { string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_BRITHDAY_CANDLE, sFuncCode }); if (sRet != UserCom.RST_OK) return false; return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 결제 상단 MOT 변경 /// /// private void SetPayMainTopMot(string sFuncCode) { try { // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.SetTopMot(sFuncCode); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #region 시리얼 변환 프로그램 체크 /// /// 시리얼 변환 프로그램 체크 /// private void SerialMsrToEmul() { try { //#20171019 IC리더기 사용시 O2MSR 실행 안하도록 수정 start //기존 //if (m_cDevStatus.Msr.UseYn == true && m_cPosStatus.Base.OlePosMsrController == "2") //변경 if (m_cDevStatus.Msr.UseYn == true && m_cPosStatus.Base.OlePosMsrController == "2" && m_cDevStatus.ICReader.UseYn == false) //#20171019 IC리더기 사용시 O2MSR 실행 안하도록 수정 end { System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(PosConst.MSR_SERIAL_EMULATOR.APP_PROCESS); if (p.GetLength(0) > 0) return; string strappname = BaseCom.NxBinPath + PosConst.MSR_SERIAL_EMULATOR.APP_FILE; System.Diagnostics.Process.Start(strappname); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start //기존 /* //17.05.18 dkshin 쇼킹박스 추가 /// /// 쇼킹박스 - 영수증 출력 /// //private ISaleReceipt m_cTradeDeal = null; private bool ShockingBox(string sInPutData) */ //변경 private bool ShockingBox(string sMenuKey, string sInPutData) //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end { try { //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start #region 기존 /* //쇼킹박스 영수증 출력 //m_cTradeDeal.PrintReceipt("test"); //sPrtData = string.Format("{0:#,##0}", m_cTrnStatus.Sale.RemainPayAmt); if (sInPutData != string.Empty) {//쇼킹박스 상품 불러오기 IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL); DataTable dt = m_cHoldDeal.SearchShockingBoxDealList(sInPutData); if (dt == null || dt.Rows.Count == 0) { // 거래내역이 존재하지 않습니다. WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0269)); return false; } else { DataRow dr = dt.Rows[0]; //m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX; m_cHoldDeal.LoadLocalTranPlu(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString()); m_cHoldDeal.UpdateHoldDeal(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString(), "1", 0, 0); // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 쇼킹박스건 결제인지 체크하기 위해 설정 //m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX; m_cTrnStatus.Head.ShockingBoxStat = "1";//0:쇼킹박스 완성 1:쇼킹방스불러오기 m_cTrnStatus.Head.ShockingBoxBarcodeData = dr["SALE_DT"].ToString() + dr["REG_NO"].ToString(); // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } } else// 쇼킹박스 처리 { //정상 거래 인지 체크 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX; m_cTrnStatus.Head.ShockingBoxStat = "0"; // 쇼킹박스 처리 string sRet = m_cSaleComplete.PosShockingBoxExecute(); if (sRet != UserCom.RST_OK) return false; // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 거래 완료 후 초기화 처리 cFormSaleMain.DisplayInit(true, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, true); } } */ #endregion 기존 #region 변경 string sTradeKind = ""; string sTrade_Stat = ""; string sSale_dt = ""; string sPos_no = ""; string sReg_no = ""; string sOrg_Bill_PosNo = ""; string sOrg_Bill_Dt = ""; string sOrg_Bill_No = ""; string sShockingBoxBarcodeData = ""; string sShockingBoxTradeKind = ""; if (sMenuKey == PosKey.MENU_KEY.ITEMINFO_PRINT) { // 상품정보출력(해피오더 랜덤박스) sTradeKind = ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX; } else if (sMenuKey == PosKey.MENU_KEY.SHOCKING_BOX) { // 쇼킹박스 sTradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX; } IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL); if (sInPutData != string.Empty) { DataTable dt = m_cHoldDeal.SearchShockingBoxDealList(sInPutData, sTradeKind, "0"); if (dt == null || dt.Rows.Count == 0) { // 거래내역이 존재하지 않습니다. WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0269)); return false; } else { DataRow dr = dt.Rows[0]; sTrade_Stat = dr["TRADE_STAT"].ToString(); sSale_dt = dr["SALE_DT"].ToString(); sPos_no = dr["POS_NO"].ToString(); sReg_no = dr["REG_NO"].ToString(); m_cHoldDeal.LoadLocalTranPlu(sSale_dt, sPos_no, sReg_no); m_cHoldDeal.UpdateHoldDeal(sSale_dt, sPos_no, sReg_no, "1", 0, 0); // 상품 판매가 재계산 m_cPluService.ItemAmountExeccute(true, true); // 쇼킹박스건 결제인지 체크하기 위해 설정 m_cTrnStatus.Head.ShockingBoxStat = "1";//0:쇼킹박스 완성 1:쇼킹방스불러오기 m_cTrnStatus.Head.ShockingBoxBarcodeData = sSale_dt + sReg_no; m_cTrnStatus.Head.ShockingBoxTradeKind = sTradeKind; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매모드 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING; cFormSaleMain.DisplayInit(false, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, false); } } else// 쇼킹박스 처리 { //정상 거래 인지 체크 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)) { // 영업일자 체크 if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd"))) { if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184)); return false; } } sShockingBoxBarcodeData = m_cTrnStatus.Head.ShockingBoxBarcodeData; // 리딩한 바코드번호 sShockingBoxTradeKind = m_cTrnStatus.Head.ShockingBoxTradeKind; // 리딩한 거래종별 m_cTrnStatus.Head.TradeKind = sTradeKind; // 거래종별 m_cTrnStatus.Head.ShockingBoxStat = "0"; //상태 // 쇼킹박스 처리 string sRet = m_cSaleComplete.PosShockingBoxExecute(); if (sRet != UserCom.RST_OK) return false; // 판매상태 변경 m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; // 판매화면 IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 거래 완료 후 초기화 처리 cFormSaleMain.DisplayInit(true, true); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus) cFormSaleMain.DisplayItem(0, true); // DataTable dt = m_cHoldDeal.SearchShockingBoxDealList(sShockingBoxBarcodeData, sShockingBoxTradeKind, "1"); if (dt != null && dt.Rows.Count > 0) { DataRow dr = dt.Rows[0]; sTrade_Stat = dr["TRADE_STAT"].ToString(); sSale_dt = dr["SALE_DT"].ToString(); sPos_no = dr["POS_NO"].ToString(); sReg_no = dr["REG_NO"].ToString(); sOrg_Bill_PosNo = dr["ORG_BILL_POSNO"].ToString(); sOrg_Bill_Dt = dr["ORG_BILLDT"].ToString(); sOrg_Bill_No = dr["ORG_BILL_NO"].ToString(); // 쇼킹박스 불러오면 trade_stat 1로 변경 -> 쇼킹박스 기능키 클릭하면 // 이 전에 읽어왔던 쇼킹박스건이 trade_stat 0으로 업데이트 안되고 1로 남아있기 때문에 // 다시 바코드 리딩 했을 때 읽어올 수 가 없었음. // 그렇기 때문에 이 전에 리딩했던번호 trade_stat 0으로 업데이트. // (trade_stat 1 이고 매출처리가 안된 것) if (sTrade_Stat == "1" && (sOrg_Bill_PosNo == "" && sOrg_Bill_Dt == "" && sOrg_Bill_No == "")) { m_cHoldDeal.UpdateHoldDeal(sSale_dt, sPos_no, sReg_no, "0", 0, 0); } } } } #endregion 변경 //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } //#20170731, 해피기프트카드(코나머니) 개발 Start, srlee #region 해피기프트카드(코나머니) /// /// 해피기프트카드(코나머니) /// /// private void PayHappyGiftCard(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 해피기프트카드(코나머니) sRet = WinPay.ShowForm(new string[] { FormManager.FORM_HPGIFTCARD, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion //#20170731, 해피기프트카드(코나머니) 개발 End, srlee //20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인 #region 해피기프트(신) 충전 /// /// 해피기프트(신) 충전 /// /// //private void HappyGiftCardRecharge(string sMenuKey) private void HappyGiftNewRecharge(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; // 해피기프트(신) 충전 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAL_HP_GIFT_NEW_CHARGED, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region PayPointMobileUnity 제휴카드(통합) 할인 처리(2017.08.29) -- START /// /// 제휴카드(통합) 할인 처리 /// /// private void PayPointMobileUnity(string sMenuKey) { string sRet = UserCom.RST_ERR; try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return; if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) { ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem) { if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue; //#20171012 해피포인트 사용 후 통신사 할인 중복 가능 start //기존 //if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) // 통신사할인 모바일쿠폰과 중복 가능 //변경 if ((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) && ((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM) || (cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT))) //#20171012 해피포인트 사용 후 통신사 할인 중복 가능 end { /////////////////////////////////////// //#20180618_웰컴카드 수정_grayber // 기존 //WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); // 변경 WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0792); /////////////////////////////////////// return; } } } else { if (m_cTrnStatus.Sale.RecvedPayAmt > 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392); return; } } // OCB 적립 후 불가 ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtc) { if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555); return; } } // 제휴카드(통합) 할인 처리 sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_MOBILE_UNITY, sMenuKey }); if (sRet != UserCom.RST_OK) return; CheckSaleComplete(); // 결제완료 체크 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion //#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 start, phj #region (복합매장)에서 외상, 선불카드 일 때 여러 점포의 제품을 찍었다면 사용하지 못하도록 팝업 오픈. private bool OtherItem_DuplicateCheck() { bool bResult = true; string sFrtShopCD = string.Empty; ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; aSaleItem.Count > iRow; iRow++) { Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; if (sFrtShopCD == string.Empty) { sFrtShopCD = cPluItem.SUB_SHOP_CD; } if (sFrtShopCD != cPluItem.SUB_SHOP_CD) { bResult = false; break; } } if (bResult == false) { //한 종류의 브랜드 제품만 선택 시 사용할 수 있습니다. WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0738); } return bResult; } #endregion //#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 end, phj //#20171227, 예약증 양식 출력 Start /// /// 예약증 양식 출력 /// /// /// private bool ReservationFormPrint() { try { string sRet = m_cSaleComplete.ExecuteReservationForm(); if (sRet != UserCom.RST_OK) return false; return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } //#20171227, 예약증 양식 출력 End //#20180413 웰컴카드 신규기능 추가 start,phj private bool WelcomeCard_Issue(string sMenuKey, string sOpenKey) { string sRet = UserCom.RST_ERR; if (PosMstManager.GetPosOption(POS_OPTION.OPT516) != "1") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0790); return false; } try { if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return false; sRet = WinPay.ShowForm(new string[] { FormManager.FORM_WELCOMECARD_ISSUE, sMenuKey, sOpenKey }); //sOpenKey 1: 영업메뉴, 2: 결제화면 if (sRet != UserCom.RST_OK) return false; //CheckSaleComplete(); // 결제완료 체크 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; } } //#20180413 웰컴카드 신규기능 추가 end,phj //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start private void HappyOrder_AddInventory_Menu(string sFuncCode) { try { WinBasic.ShowWebPos(sFuncCode); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end //#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 start #region 제조음료 포함 여부 체크 /// /// 제조음료 포함 여부 체크 /// /// public bool ChkProdItemTakeInOutYN() { bool bRet = false; string sQuery = ""; try { // 상품정보 ArrayList xSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < xSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)xSaleItem[iRow]; //Take In/Out 부가상품으로 추가된 상품들 일괄 삭제 처리 if (cSaleItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.OPT_MENU && (cSaleItem.ITEM_PLU_CD == "9901" || cSaleItem.ITEM_PLU_CD == "9902")) { xSaleItem.RemoveAt(iRow); //삭제된 경우 for문에서 나가지 않도록 row '-' 처리 iRow--; } } // 상품정보 ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); for (int iRow = 0; iRow < aSaleItem.Count; iRow++) { Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow]; //결제창 진입 전 설정된 Take In/Out 관련 설정값 초기화 //cSaleItem.PROD_TAKEINOUT_YN = "0"; //cSaleItem.PROD_TAKEINOUT_DIV = ""; if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) { continue; // 지정취소 } else { //공통코드에서 해당 상품이 TakeIn/Out 선택이 필요한 상품인지 대분류 + 중분류로 체크 sQuery = "SELECT * FROM POSMST..MST_CMM \n"; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n"; sQuery += " AND CMM_GRP_CD = 'S0110' \n"; sQuery += " AND SALES_ORG_CD = '" + m_cPosStatus.Base.BrandCd + "' \n"; sQuery += " AND '" + cSaleItem.M_CLSS + "' LIKE (CHAR_VAL_TITLE_VAL_01 + CHAR_VAL_TITLE_VAL_02) + '%' \n"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'\n"; DataTable dtTakeInOutInfo = m_cMstService.Select(new string[] { sQuery }); if (dtTakeInOutInfo != null && dtTakeInOutInfo.Rows.Count > 0) { cSaleItem.PROD_TAKEINOUT_YN = "1"; bRet = true; //break; } else { cSaleItem.PROD_TAKEINOUT_YN = "0"; } } } IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayItem(1, false); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } #endregion 제조음료 포함 여부 체크 #region 제조음료 Take In/Out 사용여부 체크 /// /// 제조음료 Take In/Out 사용여부 체크 /// /// public bool ChkProdItemTakeInUse() { bool sRet = false; string sQuery = ""; string sCmmTakeInOutUse = ""; string sCmmTakeInOutDiv = ""; try { //환경설정 정보가 없으면 공통코드의 기본값으로 설정 if (m_cPosStatus.Base.ProdTakeInOutUse.Trim() == "" || m_cPosStatus.Base.ProdTakeInOutDiv.Trim() == "") { //공통코드의 해당 영업조직 기본값 가져오기 sQuery += "SELECT TOP 1 * FROM POSMST..MST_CMM \n"; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n"; sQuery += " AND CMM_GRP_CD = 'T0040' \n"; sQuery += " AND SALES_ORG_CD = '" + m_cPosStatus.Base.BrandCd + "' \n"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'\n"; DataTable dtTakeInOutInfo = m_cMstService.Select(new string[] { sQuery }); if (dtTakeInOutInfo != null && dtTakeInOutInfo.Rows.Count > 0) { DataRow drData = dtTakeInOutInfo.Rows[0]; sCmmTakeInOutUse = CmUtil.GetDataRowStr(drData, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_01); sCmmTakeInOutDiv = CmUtil.GetDataRowStr(drData, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_02); } //Take In/Out 사용여부 if (m_cPosStatus.Base.ProdTakeInOutUse.Trim() == "") { m_cPosStatus.Base.ProdTakeInOutUse = sCmmTakeInOutUse; } //Take In/Out 기본값 if (m_cPosStatus.Base.ProdTakeInOutDiv.Trim() == "") { m_cPosStatus.Base.ProdTakeInOutDiv = sCmmTakeInOutDiv; } } if (m_cPosStatus.Base.ProdTakeInOutUse == "1") { sRet = true; } else { sRet = false; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } #endregion 제조음료 Take In/Out 사용여부 체크 #region 제조음료 Take In/Out 창 표시 /// /// 제조음료 Take In/Out 창 표시 /// /// private bool SetProdTakeInOut() { try { //Take In/Out string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_TAKE_IN_OUT_PROD }); if (sRet.Equals(UserCom.RST_OK)) { ISalePluItemUs m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); m_cPluService.ItemAmountExeccute(true, true); IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); cFormSaleMain.DisplayItem(1, false); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return true; } #endregion 제조음료 Take In/Out 창 표시 //#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 end } }