using System; using System.Text; using System.Collections; using System.Data; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 영수증 반품 처리 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Service { class SaleRefund : SaleTranCallBase, ISaleRefundUs { /// /// 생성자 /// public SaleRefund() { } /// /// 영수증 반품 대상 거래 데이터 리스트 조회 /// /// /// /// /// /// public DataTable SearchSaleReceiptList(string sSaleDate, string sPosNo, string sTradeNo, string sPayTime, string sTradeType) { string sQuery = ""; try { m_cDataService.TranComplete(); //#20171123 추후적립, 영수증반품, 영수증재발행 조회시 느린 증상 수정 start //아래 select 쿼리의 파라미터 변경 sQuery += " DECLARE @CMP_CD AS VARCHAR(5) "; sQuery += " DECLARE @STOR_CD AS VARCHAR(10) "; sQuery += " DECLARE @POS_NO AS VARCHAR(2) "; sQuery += " DECLARE @SALE_DT AS VARCHAR(8) "; sQuery += " SET @CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " SET @STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " SET @POS_NO = '" + sPosNo + "'"; sQuery += " SET @SALE_DT = '" + sSaleDate + "'"; //#20171123 추후적립, 영수증반품, 영수증재발행 조회시 느린 증상 수정 end if (m_cPosStatus.Base.TrainingFlag == "1") { sQuery = "SELECT A.SALE_DT, A.POS_NO, A.REG_NO AS TRADE_NO, A.SYS_DT, A.PAY_TIME, A.NET_SALE_AMT, A.TRADE_DIV, A.TRADE_KINDPER, "; sQuery += " A.ORG_BILLDT + A.ORG_BILL_POSNO + A.ORG_BILL_NO ORG_INFO, ISNULL(B.SALE_DT + B.POS_NO + B.TRADE_NO,'') RTN_INFO, A.AMT_DUTCHPAY_YN "; sQuery += " FROM POSLOG..ETC_SALE_HEADER A "; sQuery += " LEFT JOIN (SELECT * FROM POSLOG..ETC_SALE_HEADER "; //#20170928 낱개 반품 한 영수증 반품 기능 start //기존 //sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND TRADE_DIV = '1') B "; //변경 sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "') B "; //#20170928 낱개 반품 한 영수증 반품 기능 end sQuery += " ON A.SALE_DT = B.ORG_BILLDT AND A.POS_NO = B.ORG_BILL_POSNO AND A.REG_NO = B.ORG_BILL_NO "; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND A.SALE_DT = '" + sSaleDate + "' "; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND A.TRAIN_MODE_YN= '" + m_cPosStatus.Base.TrainingFlag + "' "; if (sTradeNo.Trim().Length == 5) sQuery += " AND A.REG_NO = '" + sTradeNo + "' "; if (sPayTime.Trim().Length == 6) sQuery += " AND A.PAY_TIME = '" + sPayTime + "' "; } else { //#20171123 추후적립, 영수증반품, 영수증재발행 조회시 느린 증상 수정 start //기존 /* sQuery = "SELECT A.SALE_DT, A.POS_NO, A.TRADE_NO, A.SYS_DT, A.PAY_TIME, A.NET_SALE_AMT, A.TRADE_DIV, A.TRADE_KINDPER, "; sQuery += " A.ORG_BILLDT + A.ORG_BILL_POSNO + A.ORG_BILL_NO ORG_INFO, ISNULL(B.SALE_DT + B.POS_NO + B.TRADE_NO,'') RTN_INFO, A.AMT_DUTCHPAY_YN "; sQuery += " FROM POSLOG..TR_SALE_HEADER A "; sQuery += " LEFT JOIN (SELECT * FROM POSLOG..TR_SALE_HEADER "; //#20170928 낱개 반품 한 영수증 반품 기능 start //기존 //sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND TRADE_DIV = '1') B "; //변경 sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "') B "; //#20170928 낱개 반품 한 영수증 반품 기능 end sQuery += " ON A.SALE_DT = B.ORG_BILLDT AND A.POS_NO = B.ORG_BILL_POSNO AND A.TRADE_NO = B.ORG_BILL_NO "; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' "; sQuery += " AND A.SALE_DT = '" + sSaleDate + "' "; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' "; sQuery += " AND A.TRAIN_MODE_YN= '" + m_cPosStatus.Base.TrainingFlag + "' "; */ //변경 sQuery += "SELECT A.SALE_DT, A.POS_NO, A.TRADE_NO, A.SYS_DT, A.PAY_TIME, A.NET_SALE_AMT, A.TRADE_DIV, A.TRADE_KINDPER, "; sQuery += " A.ORG_BILLDT + A.ORG_BILL_POSNO + A.ORG_BILL_NO ORG_INFO, ISNULL(B.SALE_DT + B.POS_NO + B.TRADE_NO,'') RTN_INFO, A.AMT_DUTCHPAY_YN "; sQuery += " FROM POSLOG..TR_SALE_HEADER A "; sQuery += " LEFT JOIN (SELECT * FROM POSLOG..TR_SALE_HEADER "; //#20170928 낱개 반품 한 영수증 반품 기능 start //기존 //sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' AND TRADE_DIV = '1') B "; //변경 sQuery += " WHERE CMP_CD = @CMP_CD AND ORG_BILLDT = @SALE_DT AND STOR_CD = @STOR_CD) B "; //#20170928 낱개 반품 한 영수증 반품 기능 end sQuery += " ON A.SALE_DT = B.ORG_BILLDT AND A.POS_NO = B.ORG_BILL_POSNO AND A.TRADE_NO = B.ORG_BILL_NO "; sQuery += " WHERE A.CMP_CD = @CMP_CD "; sQuery += " AND A.SALE_DT = @SALE_DT "; sQuery += " AND A.STOR_CD = @STOR_CD "; sQuery += " AND A.TRAIN_MODE_YN= '" + m_cPosStatus.Base.TrainingFlag + "' "; //#20171123 추후적립, 영수증반품, 영수증재발행 조회시 느린 증상 수정 end if (sTradeNo.Trim().Length == 5) sQuery += " AND A.TRADE_NO = '" + sTradeNo + "' "; if (sPayTime.Trim().Length == 6) sQuery += " AND A.PAY_TIME = '" + sPayTime + "' "; } if (sPosNo.Trim().Length == 2) sQuery += " AND A.POS_NO = '" + sPosNo + "' "; if (sTradeType == "1") { sQuery += " AND A.TRADE_DIV = '0' "; //정상 } else if (sTradeType == "2") { sQuery += " AND A.TRADE_DIV = '1' "; //반품 } else if (sTradeType == "3") { sQuery += " AND A.TRADE_DIV = '0' "; sQuery += " AND ISNULL(B.TRADE_NO,'') = '' "; //반품건 제외 } // 영수증반품 => 판매 데이터 만 대상 // 수정 => 판매, 대외거래(o2o), 선불판매, 상품권판매, LOSS //sQuery += " AND A.TRADE_KINDPER = '" + ItemConst.TRAN_KIND.NORMAL.SALE + "' "; sQuery += " AND A.TRADE_KINDPER IN ( '" + ItemConst.TRAN_KIND.NORMAL.SALE + "','" + ItemConst.TRAN_KIND.FORIGN.O2O + "','" + ItemConst.TRAN_KIND.CHARGESALE.PREPAID + "','" + ItemConst.TRAN_KIND.CHARGESALE.GIFT + "','" + ItemConst.TRAN_KIND.ETC.LOSS + "' )"; if (m_cPosStatus.Base.TrainingFlag == "1") { sQuery += " ORDER BY A.REG_NO DESC "; } else { sQuery += " ORDER BY A.TRADE_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 bool LoadLocalTran(string sSaleDate, string sPosNo, string sTradeNo) { bool bRet = false; try { m_cDataService.TranComplete(); // 해더정보 로딩 if (LoadLocalTrHeader(sSaleDate, sPosNo, sTradeNo) == false) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0248); m_cDataService.TranComplete(); return bRet; } // 상품정보 로딩 LoadLocalTrDetail(sSaleDate, sPosNo, sTradeNo); // 결제정보 로딩 LoadLocalTrPayment(sSaleDate, sPosNo, sTradeNo); // 기타정보 로딩 LoadLocalTrEtc(sSaleDate, sPosNo, sTradeNo); // 캠페인정보 로딩 LoadLocalTrCampaign(sSaleDate, sPosNo, sTradeNo); // 매출객수정보 로딩 LoadLocalTrGuestCnt(sSaleDate, sPosNo, sTradeNo); 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; } /// /// 영수증 반품 대상 거래 데이터 서버 조회 /// /// /// /// /// /// public string SearchServerTran(string sSaleDate, string sPosNo, string sTradeNo, string SaleTime) { string sStat = UserCom.RST_ERR; bool bRet = false; try { if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES) return sStat; m_cDataService.TranComplete(); // 거래 데이터 서버 조회 Hashtable htRecvData = new Hashtable(); sStat = ExecServerTranCallIrt(ItemConst.IRT_INQ_TYPE.TRAN_CALL, sSaleDate, sPosNo, sTradeNo, SaleTime, ref htRecvData); if (sStat != UserCom.RST_OK) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0259); return sStat; } if (htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RES_CD].ToString() != "00") { if (htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RES_CD].ToString() == "09") WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0248); // 해당거래 없음 else WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0259) + "\n\r ERROR CODE => " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RES_CD]); return UserCom.RST_ERR; } // 거래데이터 string sTranData = htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.TRAN_DATA].ToString(); m_cTrnStatus.Head.CmpCd = m_cPosStatus.Base.CmpCd; // CMP_CD m_cTrnStatus.Head.StoreCd = m_cPosStatus.Base.StoreNo; // STOR_CD m_cTrnStatus.Head.SaleDate = sSaleDate; // SALE_DT m_cTrnStatus.Head.PosNo = sPosNo; // POS_NO m_cTrnStatus.Head.TradeNo = htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.TRADE_NO].ToString(); // TRADE_NO // 거래 분해 처리 string[] aTranData = sTranData.Split(new string[] { "#~" }, StringSplitOptions.None); for (int i = 0; i < aTranData.Length; i++ ) { if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranHeader)) bRet = TranParserToHeader(aTranData[i]); else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranDetail)) bRet = TranParserToDetail(aTranData[i]); else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranPay)) bRet = TranParserToPayment(aTranData[i]); else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranCpiRslt)) bRet = TranParserToCampaign(aTranData[i]); else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranEtc)) bRet = TranParserToEtc(aTranData[i]); // else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranDpst)) // bRet = TranParserToGuestCnt(aTranData[i]); // else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranAdmt)) // bRet = TranParserToGuestCnt(aTranData[i]); else if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranGuestCnt)) bRet = TranParserToGuestCnt(aTranData[i]); if (bRet == false) { m_cDataService.TranComplete(); return sStat; } } // 영수증 반품 체크 string sRetDIV = htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_DIV].ToString(); if (sRetDIV != "0") // 이미 반품된 거래 { m_cTrnStatus.Head.RefundInfo = htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_SALE_DT].ToString() + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_POS_NO].ToString() + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_TRADE_NO].ToString(); } sStat = 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); m_cDataService.TranComplete(); } return sStat; } /// /// 상품불러오기를 위한 거래 데이터 상품 정보 만 로딩 /// /// /// /// /// public bool LoadLocalTranPlu(string sSaleDate, string sPosNo, string sTradeNo) { bool bRet = false; string AfterTradeDiv = string.Empty; string AfterTradeKind = string.Empty; try { ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (alTrPluItem.Count > 0) // 거래호출시 데이터 있음(다시로딩 안함) { AfterTradeDiv = m_cTrnStatus.Head.TradeDiv; AfterTradeKind = m_cTrnStatus.Head.TradeKind; // 상품정보를 제외한 모든 정보 클리어 m_cDataService.InitTranHeader(); // Loss 거래인지 확인. if (AfterTradeDiv == ItemConst.TRAN_DIV.NORMAL && AfterTradeKind == ItemConst.TRAN_KIND.ETC.LOSS) { // 로스 거래를 복사하는 거라면 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.ETC.LOSS; } ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); alPayItem.Clear(); ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); alEtcItem.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) == 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; } /// /// 영수증 반품 가능 여부 조회 /// /// /// /// /// public bool ChekcRefundTran(string sSaleDate, string sPosNo, string sTradeNo) { bool bRet = false; try { if (m_cPosStatus.Base.TrainingFlag == "1") return true; // 서버 IRT로 해당 거래 반품 가능여부 체크 Hashtable htRecvData = new Hashtable(); string sStat = ExecServerTranCallIrt(ItemConst.IRT_INQ_TYPE.TRAN_CALL, sSaleDate, sPosNo, sTradeNo, "", ref htRecvData, true); if (sStat == UserCom.RST_OK) { if (htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RES_CD].ToString() == "00") { // 영수증 반품 가능여부 체크 string sRetDIV = htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_DIV].ToString(); if (sRetDIV != "0") { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0229) + PosConst.CRLF + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_SALE_DT].ToString() + "-" + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_POS_NO].ToString() + "-" + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_TRADE_NO].ToString()); //#20171020 log 추가 UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "반품가능여부 : " + m_cTrnStatus.Head.TradeDiv + "," + "반품가능여부 : " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_DIV].ToString() + "," + "반품거래번호 : " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.TRADE_NO].ToString() + "," + "반품거래정보-일자 : " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_SALE_DT].ToString() + "," + "반품거래정보-POSNO : " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_POS_NO].ToString() + "," + "반품거래정보-거래번호 : " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RET_TRADE_NO].ToString() ); 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 bRet; } //#해피앱 추후적립 start, sskim /// /// 해피앱 추후적립 데이터 조회/상태변경 /// /// /// /// /// /// public string SearchServerHpAppSave(string sSaleDate, string sPosNo, string sTradeNo, bool sVisibleMode) { string sStat = UserCom.RST_ERR; if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES) return sStat; // 로컬 적립 데이터 유무 체크 if (SearchPointSaveYN(sSaleDate, sPosNo, sTradeNo) == true) return sStat; // 로컬 추후 적립 데이터 유무 체크 if (SearchPointAfterSaveYN(sSaleDate, sPosNo, sTradeNo) == true) return sStat; // 해피앱 추후적립 데이터 유무 체크(TR_HPAPP_AFTER_SAVE) if (SearchTrHpAppAfterSaveYN(sSaleDate, sPosNo, sTradeNo) == false) return sStat; // 거래 데이터 서버 조회 try { Hashtable htSendData = new Hashtable(); Hashtable htRecvData = new Hashtable(); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.TRAN_CALL); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.STOR_CD, m_cPosStatus.Base.StoreNo); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.SALE_DT, sSaleDate); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.POS_NO, sPosNo); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.TRADE_NO, sTradeNo); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.PAY_TIME, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.RET_DIV, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.ADD_POINT_DIV, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.ADD_CASH_DIV, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.RET_SALE_DT, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.RET_POS_NO, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.RET_TRADE_NO, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.TRAN_LEN, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.TRAN_DATA, ""); htSendData.Add(Column.IQ_TRAN_CALL_REQ.DATA.RES_CD, ""); sStat = m_cDataCommon.ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.TranInqPort, 10000, htSendData, ref htRecvData, sVisibleMode); if (sStat != UserCom.RST_OK) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0259); return sStat; } if (htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RES_CD].ToString() != "00") { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0259) + "\n\r ERROR CODE => " + htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.RES_CD]); return UserCom.RST_ERR; } // 거래데이터 string sTranData = htRecvData[Column.IQ_TRAN_CALL_REQ.DATA.TRAN_DATA].ToString(); // 거래 분해 처리 string[] aTranData = sTranData.Split(new string[] { "#~" }, StringSplitOptions.None); for (int i = 0; i < aTranData.Length; i++) { if (aTranData[i].StartsWith(ItemConst.IRT_TRAN_TYPE.TranEtc)) { bool bRet = InsertTR_SALE_ETC(sSaleDate, sPosNo, sTradeNo, aTranData[i]); } } } 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 sStat; } // #phj 해피앱 추후적립 start #region 조건체크- 적립 데이터 체크하기(TR_SALE_ETC) /// /// 해당 거래 적립 데이터 유무 확인 /// 적립 데이터 있으면 True , 없으면 false /// public bool SearchPointSaveYN(string sSaleDate, string sPosNo, string sTradeNo) { string sSql = string.Empty; try { sSql = " SELECT *"; sSql += " FROM POSLOG..TR_SALE_ETC "; sSql += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sSql += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sSql += " AND SALE_DT = '" + sSaleDate + "'"; sSql += " AND POS_NO = '" + sPosNo + "'"; sSql += " AND TRADE_NO = '" + sTradeNo + "'"; sSql += " AND ETC_WAY_CD = '80' "; sSql += " AND cancel_div = '0' "; sSql += " AND ETC_DTL_CD_01 = '01' "; // 선택한 그리드 값이 적립 되어 있는지 확인 DataTable dtTrEtc = m_cMstService.Select(new string[] { sSql }); if (dtTrEtc == null || dtTrEtc.Rows.Count == 0) { return false; } else { return true; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } } #endregion 조건체크- 적립 데이터 체크하기 #region 조건체크- 추후적립 체크하기(ETC_SALE_ETC) /// /// 해당 영수증이 추후적립 되어 있는지 체크 /// 추후적립 데이터 있으면 True , 없으면 false /// public bool SearchPointAfterSaveYN(string sSaleDate, string sPosNo, string sTradeNo) { try { string sSql = string.Empty; sSql = " SELECT A.* "; sSql += " FROM POSLOG..ETC_SALE_HEADER A LEFT JOIN POSLOG..ETC_SALE_ETC B "; sSql += " ON (A.CMP_CD = B.CMP_CD AND A.SALE_DT = B.SALE_DT AND A.STOR_CD = B.STOR_CD AND A.POS_NO = B.POS_NO AND A.REG_NO = B.REG_NO) "; sSql += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sSql += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sSql += " AND A.ORG_BILL_POSNO = '" + sPosNo + "'"; sSql += " AND A.ORG_BILLDT = '" + sSaleDate + "'"; sSql += " AND A.ORG_BILL_NO = '" + sTradeNo + "'"; sSql += " AND A.TRADE_KINDPER = '30' "; sSql += " AND B.ETC_WAY_CD = '80' "; sSql += " AND B.ETC_DTL_CD_01 = '01' "; sSql += " AND B.CANCEL_DIV = '0' "; // 선택한 그리드 값이 적립 되어 있는지 확인 DataTable dtTrETC = m_cMstService.Select(new string[] { sSql }); if (dtTrETC == null || dtTrETC.Rows.Count == 0) { return false; } else { return true; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } } #endregion 조건체크- 추후적립 체크하기 #region 조건체크- 해피앱 추후적립 체크하기(TR_HPAPP_AFTER_SAVE) /// /// 해당 영수증이 해피앱 추후적립 데이터 있는지 체크 /// 해피앱 추후적립 데이터 있으면 True , 없으면 false /// public bool SearchTrHpAppAfterSaveYN(string sSaleDate, string sPosNo, string sTradeNo) { try { string sSql = string.Empty; sSql = " SELECT *"; sSql += " FROM POSLOG..TR_HPAPP_AFTER_SAVE "; sSql += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sSql += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sSql += " AND SALE_DT = '" + sSaleDate + "'"; sSql += " AND POS_NO = '" + sPosNo + "'"; sSql += " AND TRADE_NO = '" + sTradeNo + "'"; // 선택한 그리드 값이 적립 되어 있는지 확인 DataTable dtTrETC = m_cMstService.Select(new string[] { sSql }); if (dtTrETC == null || dtTrETC.Rows.Count == 0) { return false; } else { return true; } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); return false; } } #endregion 조건체크- 추후적립 체크하기 //#해피앱 추후적립 end, sskim //2017-06-02 dkshin 해피앱 추후적립 public bool Refund_HPAPP_After_Update_Tran(string sSaleDate, string sPosNo, string sTradeNo) { bool bRet = false; try { if (m_cPosStatus.Base.TrainingFlag == "1") return true; // 서버 IRT로 해당 거래 반품 가능여부 체크 Hashtable htRecvData = new Hashtable(); Refund_HPAPP_After_Save_Update_TranCallIrt(ItemConst.IRT_INQ_TYPE.HPAPP_AFTER_SAVE_UPDATE, sSaleDate, sPosNo, sTradeNo, "", ref htRecvData); 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; } } }