using System; using System.Data; using System.Collections; using System.Linq; using System.Text; using System.Threading.Tasks; using Cosmos.Common; using Cosmos.UserFrame; using Cosmos.CommonManager; using Cosmos.ServiceProvider; namespace Cosmos.Service { class HoldDeal :SaleTranCallBase, IHoldDeal { private ISaleCompleteUs m_cSaleComplete = null; // 거래 완료처리 public HoldDeal() { m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); } /// /// 보류 거래 조회 /// /// /// public DataTable SearchHoldDealList(string sSaleDate) { string sQuery = ""; int iMaxCnt = 100; string sTimeCheck = ""; try { iMaxCnt = CmUtil.IntParse(PosMstManager.GetPosOption(POS_OPTION.OPT017)); if (iMaxCnt == 0) { sQuery = " SELECT ROW_NUMBER() OVER( ORDER BY HDR.REG_NO ASC) AS NO "; } else { sQuery = " SELECT TOP " + iMaxCnt + " ROW_NUMBER() OVER( ORDER BY HDR.REG_NO ASC) AS NO "; } sQuery += " ,(HDR.SYS_DT + HDR.PAY_TIME)SYS_DT "; //sQuery += " ,(CASE WHEN CNT > 1 THEN ITEM_NM +' " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0171) + " '+ CONVERT(VARCHAR(100),CNT - 1) + '" + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0938) + "' ELSE ITM.ITEM_NM END)ITEM_NM "; sQuery += " ,(CASE WHEN CNT > 1 THEN ITEM_NM +' " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0171) + " '"; sQuery += " +CONVERT(VARCHAR(100),CNT - 1) + '" + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0938) + "' ELSE ITM.ITEM_NM END)ITEM_NM "; sQuery += " ,CONVERT(VARCHAR,HDR.NET_SALE_AMT)NET_SALE_AMT "; sQuery += " ,CONVERT(VARCHAR,ITM.SALE_QTY)SALE_QTY "; sQuery += " ,HDR.SALE_DT, HDR.POS_NO, HDR.REG_NO "; sQuery += " FROM POSLOG.dbo.ETC_SALE_HEADER HDR "; sQuery += " INNER JOIN ("; sQuery += " SELECT DTL.CMP_CD , DTL.SALE_DT , DTL.STOR_CD , DTL.POS_NO , DTL.REG_NO "; sQuery += " , MAX(MST.SHTCUT_ITEMNM)ITEM_NM , COUNT(DTL.CMP_CD)CNT , SUM(DTL.SALE_QTY)SALE_QTY"; sQuery += " FROM POSLOG..ETC_SALE_DETAIL DTL "; sQuery += " INNER JOIN POSMST..MST_ITEM MST "; sQuery += " ON DTL.CMP_CD = MST.CMP_CD "; sQuery += " AND DTL.STOR_CD = MST.STOR_CD "; sQuery += " AND DTL.SUB_SHOP_CD = MST.SUB_STOR_CD "; sQuery += " AND DTL.ITEM_PLU_CD = MST.ITEM_CD "; sQuery += " GROUP BY DTL.CMP_CD, DTL.SALE_DT, DTL.STOR_CD, DTL.POS_NO, DTL.REG_NO "; sQuery += " ) ITM "; sQuery += " ON HDR.CMP_CD = ITM.CMP_CD "; sQuery += " AND HDR.SALE_DT = ITM.SALE_DT "; sQuery += " AND HDR.STOR_CD = ITM.STOR_CD "; sQuery += " AND HDR.POS_NO = ITM.POS_NO "; sQuery += " AND HDR.REG_NO = ITM.REG_NO "; sQuery += " WHERE HDR.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND HDR.SALE_DT = '" + sSaleDate + "'"; sQuery += " AND HDR.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND HDR.TRADE_DIV = '" + ItemConst.TRAN_DIV.NORMAL + "'"; sQuery += " AND HDR.TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.HOLD_DEAL + "'"; sQuery += " AND HDR.TRADE_STAT = '0'"; sQuery += " AND HDR.TRAIN_MODE_YN = '" + m_cPosStatus.Base.TrainingFlag + "' "; sTimeCheck = PosMstManager.GetPosOption(POS_OPTION.OPT018).ToString().Trim(); //경과 시간 구하기 if (sTimeCheck != "" && sTimeCheck != "0") { sQuery += " AND HDR.REG_DATE < '" + DateTime.Now.AddHours(CmUtil.IntParse(PosMstManager.GetPosOption(POS_OPTION.OPT018))).ToString("yyyyMMddHHmmss") + "'"; } sQuery += " ORDER BY HDR.CMP_CD, HDR.SALE_DT, HDR.STOR_CD, HDR.POS_NO, HDR.REG_NO DESC"; return m_cMstService.Select(new string[] { sQuery }); } 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 null; } /// /// 보류 거래 영수증 조회 /// /// /// /// /// public DataTable SearchHoldDealPrint(string sSaleDate, string sPosNo, string sRegNo) { string sQuery = ""; try { sQuery = " SELECT JOURNAL_DATA "; sQuery += " FROM POSLOG.dbo.ETC_SALE_JOURNAL "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND SALE_DT = '" + sSaleDate + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND POS_NO = '" + sPosNo + "'"; sQuery += " AND REG_NO = '" + sRegNo + "'"; return m_cMstService.Select(new string[] { sQuery }); } 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 null; } /// /// 보류 거래 상태 변경(삭제, 불러오기) /// /// /// /// /// /// public int UpdateHoldDeal(string sSaleDate, string sPosNo, string sRegNo, string sStats, double dQty, double dSaleAmt) { string sQuery = ""; try { if (sStats == "2" && dSaleAmt > 0) { //로그 저장! m_cSaleComplete.EtcHoldLogSvae(ItemConst.HOLD_STAT_CD.DELETE, sRegNo, dQty, dSaleAmt); } sQuery = " UPDATE "; sQuery += " POSLOG..ETC_SALE_HEADER "; sQuery += " SET TRADE_STAT ='" + sStats + "'"; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND SALE_DT = '" + sSaleDate + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND POS_NO ='" + sPosNo + "'"; sQuery += " AND REG_NO ='" + sRegNo + "'"; sQuery += " AND TRAIN_MODE_YN = '" + m_cPosStatus.Base.TrainingFlag + "' "; return m_cMstService.Update(new string[] { sQuery }); } 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 -1; } /// /// 보류 영수증 출력 /// /// /// public bool PrintHoldDeal(string sPrtData) { //// 영수증 출력 return m_cSaleComplete.PosSaleRePrint(sPrtData); } /// /// 상품불러오기를 위한 거래 데이터 상품 정보 만 로딩 /// /// /// /// /// public bool LoadLocalTranPlu(string sSaleDate, string sPosNo, string sTradeNo) { bool bRet = false; try { ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alTrPluItem.Count > 0) // 거래호출시 데이터 있음(다시로딩 안함) { // 상품정보를 제외한 모든 정보 클리어 m_cDataService.InitTranHeader(); ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); alPayItem.Clear(); ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); alPayItem.Clear(); ArrayList alTrCpiItem = (ArrayList)StateObject.GetItemObject(Column.TR_SALE_CPI_RSLT.ITEM); alTrCpiItem.Clear(); ArrayList alTrGuest = (ArrayList)StateObject.GetItemObject(Column.TR_GUEST.ITEM); alTrGuest.Clear(); return true; } m_cDataService.TranComplete(); // 상품정보 로딩 if (LoadLocalTrDetail(sSaleDate, sPosNo, sTradeNo, true) == false) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0248); m_cDataService.TranComplete(); return bRet; } m_cTrnStatus.Head.FloorCd = m_cPosStatus.Sale.SelectFloorCd; m_cTrnStatus.Head.FloorNm = m_cPosStatus.Sale.SelectFloorNm; m_cTrnStatus.Head.TableNo = m_cPosStatus.Sale.SelectTableNo; m_cTrnStatus.Head.TableNm = m_cPosStatus.Sale.SelectTableNm; 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); m_cDataService.TranComplete(); } return bRet; } //17.05.18 dkshin 쇼킹박스 추가 /// /// 쇼킹박스 거래 조회 /// /// /// //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start //기존 //public DataTable SearchShockingBoxDealList(string sInputData) //변경 public DataTable SearchShockingBoxDealList(string sInputData, string sTradeKind, string sTradeStat) //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end { string sQuery = ""; try { //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start //기존 //sQuery += "SELECT SALE_DT, POS_NO, REG_NO FROM POSLOG.dbo.ETC_SALE_HEADER "; //변경 sQuery += "SELECT SALE_DT, POS_NO, REG_NO,TRADE_STAT, ORG_BILL_POSNO,ORG_BILLDT,ORG_BILL_NO FROM POSLOG.dbo.ETC_SALE_HEADER "; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND SALE_DT + REG_NO = '" + sInputData + "'"; sQuery += " AND TRADE_DIV = '" + ItemConst.TRAN_DIV.NORMAL + "'"; //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start //기존 //sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.SHOCKING_BOX + "'"; //sQuery += " AND TRADE_STAT = '0'"; //변경 sQuery += " AND TRADE_KINDPER = '" + sTradeKind + "'"; if (sTradeStat != "1") { sQuery += " AND TRADE_STAT = '0'"; } //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end sQuery += " AND TRAIN_MODE_YN = '" + m_cPosStatus.Base.TrainingFlag + "' "; return m_cMstService.Select(new string[] { sQuery }); } 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 null; } //17.05.18 dkshin 쇼킹박스 추가 /// /// 쇼킹박스 거래 상태 변경 /// /// public int UpdateShockingBOX() { var sSQL = string.Empty; string sQuery = ""; try { sQuery = "UPDATE POSLOG..ETC_SALE_HEADER "; sQuery += "SET TRADE_STAT = '0' "; sQuery += "WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_NO = '{2}' AND SALE_DT + REG_NO = '{3}'"; sSQL = string.Format(sQuery, m_cTrnStatus.Head.CmpCd, m_cTrnStatus.Head.StoreCd, m_cTrnStatus.Head.PosNo, m_cTrnStatus.Head.ShockingBoxBarcodeData); return m_cMstService.Update(new string[] { sSQL }); } 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 -1; } //17.05.18 dkshin 쇼킹박스 추가 /// /// 쇼킹박스 거래 조회 /// /// /// public DataTable SearchShockingBoxPayCompleteList(string sSaleDate, string sTradeNo) { string sQuery = ""; try { sQuery += "SELECT SALE_DT, POS_NO, REG_NO FROM POSLOG.dbo.ETC_SALE_HEADER "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND SALE_DT = '" + sSaleDate + "'"; sQuery += " AND ORG_BILL_NO = '" + sTradeNo + "'"; sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.SHOCKING_BOX + "'"; sQuery += " AND TRADE_STAT = '1' "; return m_cMstService.Select(new string[] { sQuery }); } 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 null; } //17.05.18 dkshin 쇼킹박스 추가 /// /// 쇼킹박스 거래 상태 변경 /// /// public int UpdateShockingBOXPayComplete(string sSaleDate, string sPosNo, string sTradeNo) { var sSQL = string.Empty; string sQuery = ""; try { sQuery = "UPDATE POSLOG..ETC_SALE_HEADER "; sQuery += " SET TRADE_STAT = '0', ORG_BILL_POSNO = '', ORG_BILLDT = '', ORG_BILL_NO = '' "; sQuery += " WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_NO = '{2}' AND SALE_DT + REG_NO = '{3}' "; sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.SHOCKING_BOX + "'"; sQuery += " AND TRADE_STAT = '1'"; sSQL = string.Format(sQuery, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.StoreNo, sPosNo, sSaleDate+sTradeNo); return m_cMstService.Update(new string[] { sSQL }); } 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 -1; } } }