using System; using System.Collections; using System.IO; using Cosmos.UserFrame; using Cosmos.BaseFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Data; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 영수증 출력 처리 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Service { class PosReceiptBase { protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 protected StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) protected PosStatus m_cPosStatus; // 기본정보 참조 protected TranStatus m_cTrnStatus; // 거래정보 참조 protected DeviceStatus m_cDevStatus; // 장비정보 참고 protected IPosPrinterUs m_cPosPrinter = null; protected IDatabaseSQL m_cSqlDbService = null; // 데이터베이스 관리 protected IMasterUs m_cMstService = null; // 마스터 인터페이스 //private MakeTranLog m_cTranService = null; private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 protected static ArrayList m_aPrintBuf = new ArrayList(); /// /// 출력데이터(0:RECEIPT:본영수증) /// protected static ArrayList m_aRecPrintBuf = new ArrayList(); /// /// 출력데이터(9:NOJNL:부가영수증(저널 대상아님)) /// protected static ArrayList m_aEtcPrintBuf = new ArrayList(); /// /// 영수증 메시지 마스터 정보 /// protected DataTable m_dtMstBillMsg = null; /// /// 영수증 유형 마스터 정보 /// protected DataTable m_dtMstBillType = null; /// /// 설문참여 메시지 마스터 정보 /// protected DataTable m_dtMstVoteMsg = null; /// /// 정렬구분('0':오른쪽, '1':가운데, '2':왼쪽) /// protected string m_sPaySortDiv; /// /// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대) /// protected string m_sPaySizeDiv; //grayber@20180226 대기번호표 개선 start - 구분 추가 /// /// 전자영수증 구분 /// protected bool m_bElectRec = false; //grayber@20180226 대기번호표 개선 end public PosReceiptBase() { m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보 m_cPosPrinter = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER); m_cSqlDbService = (IDatabaseSQL)sManager.InitServiceInstance(ServiceLists.AGENT_DATABASE.DLL, ServiceLists.AGENT_DATABASE.DATABASE_MSSQL); m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER); //m_cTranService = (MakeTranLog)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.MAKE_TRANLOG); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); } /// /// 영수증 버퍼 초기화 /// /// public void PrintBufClear() { m_aPrintBuf.Clear(); m_aRecPrintBuf.Clear(); m_aEtcPrintBuf.Clear(); } /// /// 영수증 상단 영역 출력 /// /// 0:본영수증, 9:기타영수증 /// 상단이미지 출력여부 /// 명판 출력여부 /// 상단메시지 출력여부 /// 일자시간 출력여부 /// protected bool SetTopPosPrintData(string sPrtID, bool bTopImg, bool bStamp, bool bTopMsg, bool bTopInfo) { return SetTopPosPrintData(sPrtID, bTopImg, bStamp, bTopMsg, bTopInfo, ""); } protected bool SetTopPosPrintData(string sPrtID, bool bTopImg, bool bStamp, bool bTopMsg, bool bTopInfo, string sTitleName) { return SetTopPosPrintData(sPrtID, bTopImg, bStamp, bTopMsg, bTopInfo, sTitleName, false); } protected bool SetTopPosPrintData(string sPrtID, bool bTopImg, bool bStamp, bool bTopMsg, bool bTopInfo, string sTitleName, bool bDisplay) { try { // 상단 이미지 출력 if (bTopImg == true && PosMstManager.GetPosOption(POS_OPTION.OPT409) != "0" && m_cPosStatus.Base.TextLogoMsgUseYn != "1") AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_TBM); // 상단 텍스트로고 출력 if (m_cPosStatus.Base.TextLogoMsgUseYn == "1") SetTextLogoMsg(sPrtID); // 주문(대기)번호 출력! if (bTopMsg == true) { #region //#20170913 TO STAY, TO GO 정보 영수증 출력 start string sPackTradeNm = ""; if (m_cTrnStatus.Head.PackTradeDiv != "") { #region if (m_cTrnStatus.Head.PackTradeDiv == "1") { sPackTradeNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1003); } else if (m_cTrnStatus.Head.PackTradeDiv == "2") { sPackTradeNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1004); } else if (m_cTrnStatus.Head.PackTradeDiv == "3") { sPackTradeNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1005); } #endregion //AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, sPackTradeNm); } //#20170913 TO STAY, TO GO 정보 영수증 출력 end if (PosMstManager.GetPosOption(POS_OPTION.OPT008) == "1" && m_cTrnStatus.Head.OrderNo != "") { #region if (m_cTrnStatus.Head.IsBellUse.Equals("1")) { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, "진동벨번호"); } else { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097)); } AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BIG, PosConst.PRT_FMT.F103, m_cTrnStatus.Head.OrderNo); //#20170913 TO STAY, TO GO 정보 영수증 출력 start if (sPackTradeNm != "") { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, sPackTradeNm); } //#20170913 TO STAY, TO GO 정보 영수증 출력 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); #endregion } else if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE) { #region // Add, 2017.03.14 => 후불-판매모드 일때는 영수증에 주문번호를 무조건 출력 한다. var temp = string.IsNullOrWhiteSpace(m_cTrnStatus.Head.OrderNo) ? m_cTrnStatus.Head.TradeNo : m_cTrnStatus.Head.OrderNo; AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097) + ":" + temp); //#20170913 TO STAY, TO GO 정보 영수증 출력 start if (sPackTradeNm != "") { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, sPackTradeNm); } //#20170913 TO STAY, TO GO 정보 영수증 출력 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); #endregion } #endregion } // 명판 출력 if (bStamp == true) SetStampGuidePrintData(sPrtID, PosConst.BILL_PRT_LOC.STAMP); // 상단메시지 출력 if (bTopMsg == true) { if (PosMstManager.GetPosOption(POS_OPTION.OPT411) != "0") SetStampGuidePrintData(sPrtID, PosConst.BILL_PRT_LOC.TOP); ////주문(대기)번호 출력! //if (PosMstManager.GetPosOption(POS_OPTION.OPT008) == "1" && m_cTrnStatus.Head.OrderNo != "") //{ // AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097) + ":" + m_cTrnStatus.Head.OrderNo); //} } // 연습모드이면 연습모드 여부 출력 if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033)); #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.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.CASHBILL) continue; // // 소득공제, 지출증빙 타이틀 출력 // AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103 // , (cEtcItem.OCCUR_ENTRY_11 == "0" ? MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0041) : MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0042))); //} #endregion // 반품 타이틀 출력 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) { AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0002)); } // grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 영수증 출력 : 대기번호표 타이틀 출력 // 개별 타이틀 정보 출력 // 기존 //if (sTitleName != "") AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, sTitleName); // 변경 if (sTitleName != "" && //grayber@20180226 대기번호표 조건 변경 start - 조건 단순화 // 기존 //PosMstManager.GetPosOption(POS_OPTION.OPT429).Trim().Equals("1") // 전자영수증 발행 여부 //&& PosMstManager.GetPosOption(POS_OPTION.OPT008).Trim().Equals("1") // 대기(주문) 번호 사용여부 //&& m_cTrnStatus.Head.OrderNo.Trim().Equals("") != true // 주문번호가 있으면 //&& m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND // 반품이 아닐때 //// grayber@20180122 전자영수증 조건 추가 start - 해피앱 전자영수증 사용 여부 확인 //&& CheckElectronic_Receipt().Equals("Y") == true // 전자영수증 확인 //// grayber@20180122 전자영수증 조건 추가 end // 변경 m_bElectRec == true && m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND //grayber@20180226 대기번호표 조건 변경 end ) { AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_BGB, PosConst.PRT_FMT.F103, sTitleName); AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, " "); // 공백 추가 } else { if (sTitleName.Trim().Equals("") != true) AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, sTitleName); } // grayber@20180110 전자영수증 주문(대기)번호표 출력 end if (bTopInfo == true) { #region if (PosMstManager.GetPosOption(POS_OPTION.OPT401) == "1") { // 2019-04-16 - 1997fx11 : 판매일자 및 POS번호, 캐셔이름 SetBillTypeTopBtmPrintData(sPrtID, PosConst.BILL_TYPE_DIV.TOP_INFO); } else { string sCashierName = m_cPosStatus.Base.CashierName; // 판매원명 //#20171107 통제관리 start, phj //기존 //if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId); //변경 if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) { if ((m_cTrnStatus.Head.CashierId.Length) > 3) { sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId.Substring(m_cTrnStatus.Head.StoreCd.Length, 3)); } else { if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId); } } //#20171107 통제관리 end, phj // 거래구분,일자,시간, POS번호,캐셔명 AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND ? MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0002) : MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0001)) + " " + m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SysYmd) + " " + CmUtil.StrToTime(m_cTrnStatus.Head.PayHms) + " POS:" + m_cTrnStatus.Head.PosNo + "(" + CmUtil.LeftH(sCashierName, 6) + ")"); } #endregion } 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; } /// /// 영수증 하단 영역 출력 /// /// 0:본영수증, 9:기타영수증 /// 하단이미지 출력여부 /// 하단메시지 출력여부 /// 하단정보 출력여부 /// 영수증바코드 출력여부 /// 추가메시지 출력여부 /// protected bool SetBtmPosPrintData(string sPrtID, bool bBtmImg, bool bBtmMsg, bool bBtmInfo, bool bBarCode, bool bAddMsg) { return SetBtmPosPrintData(sPrtID, bBtmImg, bBtmMsg, bBtmInfo, bBarCode, bAddMsg, 1); } protected bool SetBtmPosPrintData(string sPrtID, bool bBtmImg, bool bBtmMsg, bool bBtmInfo, bool bBarCode, bool bAddMsg, int iPrintCnt) { string sPrintMsg = ""; try { if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES) { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0035)); } // 하단 메시지 출력 if (bBtmMsg == true && PosMstManager.GetPosOption(POS_OPTION.OPT412) != "0") SetStampGuidePrintData(sPrtID, PosConst.BILL_PRT_LOC.BOTTOM); //grayber@20171214 캠페인 리펀드 쿠폰 start // 캠페인 리펀드 출력 if (PosMstManager.GetPosOption(POS_OPTION.OPT431).Equals("1") == true && bAddMsg == true) { SetCpiRefundPrint(sPrtID); } //grayber@20171214 캠페인 리펀드 쿠폰 end // 하단정보 if (bBtmInfo == true && PosMstManager.GetPosOption(POS_OPTION.OPT401) == "1") { SetBillTypeTopBtmPrintData(sPrtID, PosConst.BILL_TYPE_DIV.BTM_INFO); } //grayber@20171214 캠페인 리펀드 쿠폰 start // 해피앱 추후 적립 bBarCode 구분자 추가하여 주석 해제 // 바코드가 출력시에 출력되도록 처리 if (bBarCode == true) { //#20170807 명판 캠페인 커팅 start //#해피앱 추후적립 start, sskim if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR) { //#20180509 해피앱 추후적립 사용여부 옵션 처리 start //기존 //if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL) //변경 if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && PosMstManager.GetPosOption(POS_OPTION.OPT515) == "1") // 해피앱 추후적립 사용 여부(0:사용안함, 1:사용함) //#20180509 해피앱 추후적립 사용여부 옵션 처리 end { //#17470 패션파이브 영수증 메시지 수정 요청 start //기존 //SetHpAppAfterSavePrint(sPrtID); // 해피앱 추후적립 문구 출력 //변경 //패션5, 라뜰리에 영업조직은 해피앱 추후적립 문구 미출력 if (m_cPosStatus.Base.BrandCd != "009" && m_cPosStatus.Base.BrandCd != "021") { SetHpAppAfterSavePrint(sPrtID); // 해피앱 추후적립 문구 출력 } //#17470 패션파이브 영수증 메시지 수정 요청 end } } //#해피앱 추후적립 end, sskim //#20170807 명판 캠페인 커팅 end } //grayber@20171214 캠페인 리펀드 쿠폰 end // 바코드 출력 if (bBarCode == true && PosMstManager.GetPosOption(POS_OPTION.OPT403) != "0" && m_cPosStatus.Sale.DutchPayFlg != "2") // && m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL) { //2017-06-02 dkshin 해피앱 추후적립 - 영수증 바코드 포맷 변경 //string sBarData = m_cTrnStatus.Head.SaleDate + m_cTrnStatus.Head.PosNo + m_cTrnStatus.Head.PayHms; //AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BA1, sBarData); string sBarData = ""; if (m_cTrnStatus.Head.CmpCd == "PCKR") { sBarData = "4"; } else if (m_cTrnStatus.Head.CmpCd == "BRKR") { sBarData = "5"; } else if (m_cTrnStatus.Head.CmpCd == "SLKR") { sBarData = "6"; } //2017.11.01;중국은 7, 그 외 지역은 BarData 자리 수를 마추기 위해 9 로 추가함;girak.kim; Start else if (m_cTrnStatus.Head.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCCN)) { sBarData = "7"; } else if (m_cTrnStatus.Head.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) { sBarData = "8"; } else { sBarData = "9"; } //2017.11.01;그 외 지역은 BarData 자리 수를 마추기 위해 9 로 추가함;girak.kim; End sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(4, 1); //빌5 sBarData += m_cTrnStatus.Head.PosNo.ToString().Substring(0, 1); //P1 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(0, 1); //년1 sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(3, 1); //빌4 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(1, 1); //년2 sBarData += m_cTrnStatus.Head.PosNo.ToString().Substring(1, 1); //P2 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(2, 1); //년3 //sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(2, 1); //점3 sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 5, 1); //점3 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(3, 1); //년4 //sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(3, 1); //점4 sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 4, 1); //점4 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(4, 1); //월1 sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(2, 1); //빌3 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(5, 1); //월2 //sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(4, 1); //점5 sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 3, 1); //점5 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(6, 1); //일1 sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(1, 1); //빌2 sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(7, 1); //일2 //sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(5, 1); //점6 sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 2, 1); //점6 //sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(6, 1); //점7 sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 1, 1); //점7 //#15456 영수증 바코드 번호표기 start //기존 //AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BA1, sBarData); //변경 AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BAR, sBarData); //#15456 영수증 바코드 번호표기 end m_cTrnStatus.Head.RcptBarcodeData = sBarData; m_cPosStatus.Base.LastRcptBarcodeData = sBarData; } // 하단 고객용/보관용 명칭 출력 if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.NORMAL.DELIMITER) == true || m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.UNDECIDED.DELIMITER) == true || m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.FORIGN.DELIMITER) == true || m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.AFTER.DELIMITER) == true || m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == true) { if (iPrintCnt == 1) { sPrintMsg = CmUtil.MidH(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0136), 0, 42).Trim(); // 고객용 } else //if (iPrintCnt == 2) { sPrintMsg = CmUtil.MidH(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0123), 0, 42).Trim(); // 보관용 } } else { sPrintMsg = CmUtil.MidH(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0123), 0, 42).Trim(); // 보관용 } if (sPrintMsg != "") AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, "[" + sPrintMsg + "]"); // 추가 메시지 출력 if (bAddMsg == true) { SetCampaignPrint(sPrtID); // 영수캠페인(포함) 데이터 출력 SetVotePrintData(sPrtID); // 설문참여 메시지 } // #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 Start, lsr //grayber@20180202 [BR]해피오더 고객정보 추가 + 원산지 표기 start - [BR] 분리 //if ( m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true ) //{ //if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.FORIGN.O2O) // 해피오더 영양정보 출력 if (m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.FORIGN.O2O) // #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 End, lsr { // 결제 내역 받아 오기 ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); // 해피오더 주문번호 가져 오기 Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)aPayItem[0]; string sOrderNum = cPayItem.OCCUR_ENTRY_01; string sOrderDt = cPayItem.OCCUR_ENTRY_03; // 해피오더 영양정보 조회 IHappyOrderList cHappyOrder = (IHappyOrderList)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HAPPY_ORDER_LIST); DataTable dtReturn = cHappyOrder.GetHappyOrderData(sOrderNum, sOrderDt); if (dtReturn != null && dtReturn.Rows.Count > 0) { DataRow drData = dtReturn.Rows[0]; string sNutritionMsg = CmUtil.GetDataRowStr(drData, "NUTRITION_MSG"); //#17141 [해피오더]배달영수증 주소 추가 start string sHappyOrderDeliveryInfo = CmUtil.GetDataRowStr(drData, "FILLER5"); //#17141 [해피오더]배달영수증 주소 추가 end //#17141 [해피오더]배달영수증 주소 추가 start if (sNutritionMsg != "" || sHappyOrderDeliveryInfo != "") { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); } if (sNutritionMsg != "") { //#17141 [해피오더]배달영수증 주소 추가 end //#20180323 해피오더 영수증 재발행시 원산지 정보 출력 기능 수정 start //주문서 출력시 원산지 정보 출력, 재발행시 원산지 정보 미출력되도록 수정 //기존 AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, sNutritionMsg); //변경 //AddPrintData(PosConst.PRT_ITEM.REC_TEMP, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, sNutritionMsg); //#20180323 해피오더 영수증 재발행시 원산지 정보 출력 기능 수정 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); //#17141 [해피오더]배달영수증 주소 추가 start } if (sHappyOrderDeliveryInfo != "") { string[] DeliveryDataList = null; DeliveryDataList = sHappyOrderDeliveryInfo.Split(new string[] { "#~" }, StringSplitOptions.None); if (DeliveryDataList != null) { //#17533 해피오더)영수증/주문서 전화번호 항목 추가 start string sRecviver = ""; string sRecviverAddress = ""; string sReceiverHp = ""; //#17533 해피오더)영수증/주문서 전화번호 항목 추가 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " [배송지 정보]"); //고객명 if (DeliveryDataList[0] != "") { sRecviver = string.Format("{0}{1}{2}", CmUtil.LeftH(DeliveryDataList[0], 2), ((DeliveryDataList[0].Length > 2) ? new string('*', DeliveryDataList[0].Length - 2) : "*"), CmUtil.RightH(DeliveryDataList[0], 2)); } //주소지 if (DeliveryDataList[1] != "") { sRecviverAddress = DeliveryDataList[1].Trim(); } //#17533 해피오더)영수증/주문서 전화번호 항목 추가 start //연락처 if (DeliveryDataList[2] != "") { //#17673 PB 안산본오우성 - 해피오더창에서 배달중 누르면 [고객센터로 연락주세요] 팝업 발생 start //기존 //sReceiverHp = sReceiverHp.Substring(sReceiverHp.Length - 4, 4); //변경 sReceiverHp = DeliveryDataList[2].Substring(DeliveryDataList[2].Length - 4, 4); //#17673 PB 안산본오우성 - 해피오더창에서 배달중 누르면 [고객센터로 연락주세요] 팝업 발생 end } //#17533 해피오더)영수증/주문서 전화번호 항목 추가 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1189) + " : " + sRecviver); //#17533 해피오더)영수증/주문서 전화번호 항목 추가 start AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0952) + " : " + sReceiverHp); //#17533 해피오더)영수증/주문서 전화번호 항목 추가 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1087) + " : " + sRecviverAddress); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); } } //#17141 [해피오더]배달영수증 주소 추가 end } } else // 배달결제 영양정보 출력 { // 결제 내역 받아 오기 ArrayList alTrPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alTrPayItem) { // #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 Start, lsr //if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.ORDER_ITEM && // (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.CALLCENTER_PAY || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.BAEMIN_PAY)) // 배달(콜센터)결제 또는 배달의민족 또는 요기요배달 결제일 경우에 영양정보 & 열량정보 출력 if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.ORDER_ITEM && (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.CALLCENTER_PAY || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.BAEMIN_PAY || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.YOGIYO_PAY) // grayber@20180213 배달결제 영양정보 출력 거래구분 추가 정상일때만 출력하도록 처리 start // 추가 && m_cTrnStatus.Head.TradeDiv.Equals(ItemConst.TRAN_DIV.NORMAL) == true // 정상 거래 건 // grayber@20180213 배달결제 영양정보 출력 거래구분 추가 정상일때만 출력하도록 처리 end ) // #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 End, lsr { // 상품 내역 받아 오기 ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); int nCnt = 0; string sItemInfo = ""; foreach (Column.TR_PLU.DATA cPluItem in alPluItem) { DataTable dtData = m_cDataCommon.SearchItemCode(cPluItem.SUB_SHOP_CD, cPluItem.ITEM_PLU_CD, ""); if (dtData == null || dtData.Rows.Count == 0) continue; DataRow dr = dtData.Rows[0]; // 상품의 영양정보와 열량정보가 존재하지 않으면 Skip 처리 if (CmUtil.StringNullEmpty(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_INFO)) == "" && CmUtil.StringNullEmpty(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.CALORY_INFO)) == "") { continue; } // grayber@20180213 배달결제 영양정보 출력 양식 변경, 상품명 및 캐리지리턴 추가 start // 기존 //if (nCnt > 0) //{ // sItemInfo += "/"; //} //sItemInfo += CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_INFO) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.CALORY_INFO); // 변경 sItemInfo += "- 상품명 : " + cPluItem.ITEM_NAME + "\r\n"; sItemInfo += CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_INFO) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.CALORY_INFO) + "\r\n\r\n"; // grayber@20180213 배달결제 영양정보 출력 양식 변경, 상품명 및 캐리지리턴 추가 end nCnt++; } AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, sItemInfo); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); break; } } } // #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 Start, lsr //} //grayber@20180202 [BR]해피오더 고객정보 추가 + 원산지 표기 end // #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 End, lsr // 하단이미지 출력 if (bBtmImg == true && PosMstManager.GetPosOption(POS_OPTION.OPT410) != "0") AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BBM); 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; } #region 영수 캠페인(포함) 출력 데이터 설정 /// /// 영수 캠페인(포함) 출력 데이터 설정 /// /// /// private bool SetCampaignPrint(string sPrtID) { try { if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return true; // 영수 캠페인 출력 데이터 설정 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); ArrayList alPrtBuf = cCampaingMain.GetCampaignPrintData(new string[] { }); if (alPrtBuf == null || alPrtBuf.Count <= 0) return true; //AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); foreach (string sPrtData in alPrtBuf) { AddPrintData(sPrtID, sPrtData); } 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 /// /// 영수증 상단 텍스트로고 데이터 생성 /// /// /// protected bool SetTextLogoMsg(string sPrtID) { try { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, m_cPosStatus.Base.TextLogoMsg1); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, m_cPosStatus.Base.TextLogoMsg2); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR); 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; } /// /// 영수증 출력 완료(커팅) 데이터 생성 /// /// /// protected bool SetEndPosPrintData(string sPrtID) { try { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_CUT, ""); // 영수증 커팅 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; } /// /// 상품(정상상품) 출력 데이터 생성 /// /// /// /// /// /// /// /// /// /// protected bool SetPluItemPrintData(string sPrtID, string sPRT_HDR, string sItemName, double nSalePrc, long nSaleQty, double nDcAmt, string sSaleAmt, string sTaxCd) { try { // 영수증 제품명 두줄 출력(1 : 1줄 출력, 2 : 2줄 출력) if (PosMstManager.GetPosOption(POS_OPTION.OPT414) == "2" && m_cPosStatus.Mst.CntryDiv != ItemConst.CNTRY_DIV.FR) // 프랑스는 두줄출력 안함! { // 상품명 AddPrintData(sPrtID, sPRT_HDR, sItemName); // 상품 단가 출력(0 : 미 출력, 1 : 출력) 두줄출력일때만 가능 string sSalePrc = (PosMstManager.GetPosOption(POS_OPTION.OPT415) == "1") ? m_cPosStatus.Global.NumericTOCurrency(nSalePrc) : ""; // 단가, 수량, 금액 AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F300, sSalePrc, nSaleQty.ToString(), sSaleAmt); } else { if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.FR) { // 수량, 상품명, 단가, 금액, 세금구분 AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F501, sItemName, nSaleQty.ToString(), m_cPosStatus.Global.NumericTOCurrency(nSalePrc), sSaleAmt, sTaxCd); } else { // grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 영수증 출력 : 제품명 , 수량 출력 // 기존 // 상품명, 수량, 금액 //AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F301, sItemName, nSaleQty.ToString(), sSaleAmt); // 변경 if ( //grayber@20180226 대기번호표 조건 변경 start - 조건 단순화 // 기존 //PosMstManager.GetPosOption(POS_OPTION.OPT429).Trim().Equals("1") // 전자영수증 사용 유무 //&& PosMstManager.GetPosOption(POS_OPTION.OPT008).Trim().Equals("1") // 대기(주문) 번호 사용여부 //&& m_cTrnStatus.Head.OrderNo.Trim().Equals("") != true // 주문번호가 있으면 //&& m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND // 반품이 아닐때 //// grayber@20180122 전자영수증 조건 추가 start - 해피앱 전자영수증 사용 여부 확인 //&& CheckElectronic_Receipt().Equals("Y") == true // 전자영수증 확인 //// grayber@20180122 전자영수증 조건 추가 end // 변경 m_bElectRec == true && m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND //grayber@20180226 대기번호표 조건 변경 end ) { // 제품명 , 수량 AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F200, sItemName, nSaleQty.ToString()); return true; } else { // 상품명, 수량, 금액 AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F301, sItemName, nSaleQty.ToString(), sSaleAmt); } // grayber@20180110 전자영수증 주문(대기)번호표 출력 end } } return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception : " + ex.Message); } return false; } /// /// 영수증 출력 처리 /// /// 본영수증출력여부 /// 기타 출력여부 /// public bool PrintExecute(bool bRecPrt, bool bEtcPrt, bool bSaveFile) { bool bRet = false; try { string CRLF = "\r\n"; if (bSaveFile == true) { // 최종 영수증데이터 저장 //WriteReceiptFile("PRT_REC.TXT", m_aPrintBuf, ""); WriteReceiptFile("PRT_REC.TXT", m_aRecPrintBuf, PosConst.PRT_ITEM.REC); //WriteReceiptFile("PRT_ETC.TXT", m_aEtcPrintBuf, PosConst.PRT_ITEM.ETC); } if (m_cPosStatus.Base.OlePosPrinterModel == "" || m_cPosStatus.Base.OlePosPrinterModel == "99") { #region string sPrtData = ""; frmPrtData fPrtData = new frmPrtData(); sPrtData = ""; for (int i = 0; i < m_aPrintBuf.Count; i++) { sPrtData += m_aPrintBuf[i].ToString().Substring(1) + PosConst.CRLF; } fPrtData.txtPrtData.Text = sPrtData; sPrtData = ""; for (int i = 0; i < m_aRecPrintBuf.Count; i++) { sPrtData += m_aRecPrintBuf[i].ToString().Substring(1) + PosConst.CRLF; } fPrtData.txtRecPrtData.Text = sPrtData; sPrtData = ""; for (int i = 0; i < m_aEtcPrintBuf.Count; i++) { sPrtData += m_aEtcPrintBuf[i].ToString().Substring(1) + PosConst.CRLF; } fPrtData.txtEtcPrtData.Text = sPrtData; sPrtData = ""; // 캠페인 정보 ArrayList alTrCpiItem = (ArrayList)StateObject.GetItemObject(Column.TR_SALE_CPI_RSLT.ITEM); foreach (Column.TR_SALE_CPI_RSLT.DATA cTrPluCpi in alTrCpiItem) { if (cTrPluCpi.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue; sPrtData += CmUtil.RPadH(cTrPluCpi.CPI_CD, 8) + CmUtil.RPadH(cTrPluCpi.ITEM_PLU_CD, 14) + CmUtil.LPadH(cTrPluCpi.DC_QTY.ToString(), 5) + CmUtil.LPadH(cTrPluCpi.DC_SUM_AMT.ToString(), 12) + CmUtil.LPadH(cTrPluCpi.ACCUM_POINT.ToString(), 12) + PosConst.CRLF; } fPrtData.txtCampaign.Text = sPrtData; fPrtData.ShowDialog(); #endregion return true; } // 영수증 출력버퍼 배열 사이즈 계산 int nPrtBufSize = 0; if (bRecPrt == true && m_aRecPrintBuf.Count > 0) nPrtBufSize += m_aRecPrintBuf.Count; if (bEtcPrt == true && m_aEtcPrintBuf.Count > 0) nPrtBufSize += m_aEtcPrintBuf.Count; string[] aPrtBuf = new string[nPrtBufSize]; // 영수증 출력 int nRow = 0; for (int i = 0; i < m_aPrintBuf.Count; i++) { if (bRecPrt == true && (m_aPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.REC) == true || m_aPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.REC_TEMP) == true)) { aPrtBuf[nRow] = m_aPrintBuf[i].ToString().Substring(1).TrimEnd(); nRow++; } else if (bEtcPrt == true && m_aPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.ETC) == true) { aPrtBuf[nRow] = m_aPrintBuf[i].ToString().Substring(1).TrimEnd(); nRow++; } } #region //int nRow = 0; //if (bRecPrt == true && m_aRecPrintBuf.Count > 0) //{ // // 본영수증 출력 // for (int i = 0; i < m_aRecPrintBuf.Count; i++, nRow++) // { // aPrtBuf[nRow] = m_aRecPrintBuf[i].ToString().Substring(1).TrimEnd(); // } //} //if (bEtcPrt == true && m_aEtcPrintBuf.Count > 0) //{ // // 기타영수증 출력 // for (int i = 0; i < m_aEtcPrintBuf.Count; i++, nRow++) // { // aPrtBuf[nRow] = m_aEtcPrintBuf[i].ToString().Substring(1).TrimEnd(); // } //} #endregion //if (m_cDevStatus.Printer.UseYn != false) bRet = m_cPosPrinter.ReceiptPrinter(aPrtBuf); // 영수증 출력 처리 if (m_cDevStatus.Printer.UseYn != false) bRet = m_cPosPrinter.ReceiptPrinter(aPrtBuf, 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 string SaveJnlExecute(string[] aParam) { string sJnlData = ""; string sRet = UserCom.RST_ERR; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start string sHPC_SAVE_APPR_DT = string.Empty; string sHPC_SAVE_APPR_NO = string.Empty; string sHPC_USE_APPR_DT = string.Empty; string sHPC_USE_APPR_NO = string.Empty; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end try { //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start //Params if (aParam.Length == 4) { sHPC_SAVE_APPR_DT = aParam[0]; sHPC_SAVE_APPR_NO = aParam[1]; sHPC_USE_APPR_DT = aParam[2]; sHPC_USE_APPR_NO = aParam[3]; } //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end // 저널데이터 획득 int nRow = 0; for (int i = 0; i < m_aRecPrintBuf.Count; i++) { if (m_aRecPrintBuf[i].ToString().Length > 0) { string sPrtHdr = m_aRecPrintBuf[i].ToString().Substring(1, 5); //if (sPrtHdr == PosConst.PRT_HDR.PRT_TBM || sPrtHdr == PosConst.PRT_HDR.PRT_IMG) continue; if (sPrtHdr == PosConst.PRT_HDR.PRT_IMG) continue; if (m_aRecPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.REC) == true) sJnlData += CmUtil.RPadH(m_aRecPrintBuf[i].ToString().Substring(1), 47); nRow++; } } if (sJnlData == "") sJnlData = "Empty Journal Data"; // 저널데이터 저장 string sQuery = ""; if (m_cDataCommon.TradeNoAddCheck("") == false) { //string sRegNo = string.Empty; //DataTable dt = null; //sQuery = " SELECT ISNULL(MAX(REG_NO),0) AS REG_NO "; //sQuery += " WHERE 1 = 1 "; //sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; //sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "'"; //sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; //sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'"; //int iRet = m_cSqlDbService.DBSelect(sQuery, out dt); //sRegNo = dt.Rows[0]["REG_NO"].ToString(); sQuery += " INSERT INTO POSLOG..ETC_SALE_JOURNAL ( "; sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, REG_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, "; sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE "; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start -- 주석 처리 (ETC_SALE_JOURNAL 이라 주석) //추가 //sQuery += " ,HPC_SAVE_APPR_DT, HPC_SAVE_APPR_NO ,HPC_USE_APPR_DT, HPC_USE_APPR_NO"; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', "; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start -- 주석 처리 (ETC_SALE_JOURNAL 이라 주석 처리) // 기존 sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}', '{16}' )"; // 변경 //sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}', {16} "; //sQuery += ", '{17}','{18}', '{19}','{20}' "; //sQuery += " )"; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end sQuery = string.Format(sQuery , m_cTrnStatus.Head.CmpCd // CMP_CD , m_cTrnStatus.Head.StoreCd // STOR_CD , m_cTrnStatus.Head.SaleDate // SALE_DT , m_cTrnStatus.Head.PosNo // POS_NO , m_cTrnStatus.Head.RegNo // REG_NO , m_cTrnStatus.Head.TradeNo // TRADE_NO , m_cTrnStatus.Head.TradeDiv // TRADE_DIV , m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN , m_cTrnStatus.Head.TradeKind // TRADE_KINDPER , m_cTrnStatus.Head.SysYmd // SYS_DT , m_cTrnStatus.Head.PayHms // SYS_TIME , m_cTrnStatus.Head.CashierId // PIC_NO , m_cTrnStatus.Head.NetSaleAmt // BILL_AMT , sJnlData //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start -- 주석 처리 ETC_SALE_JOURNAL 이라 주석 처리 // 기존 , "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")); // 변경 //, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss") //, sHPC_SAVE_APPR_DT //, sHPC_SAVE_APPR_NO //, sHPC_USE_APPR_DT //, sHPC_USE_APPR_NO //); //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end -- 주석 처리 ETC_SALE_JOURNAL 이라 주석 처리 } else { sQuery += " INSERT INTO POSLOG..TR_SALE_JOURNAL ( "; sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, "; sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE "; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start // 추가 sQuery += " ,HPC_SAVE_APPR_DT, HPC_SAVE_APPR_NO ,HPC_USE_APPR_DT, HPC_USE_APPR_NO"; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', "; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start // 기존 //sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}' )"; //변경 sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}' "; sQuery += ", '{16}','{17}' , '{18}','{19}' "; sQuery += " )"; //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end //#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 start //TR_SALE_HEADER, TR_SALE_JOURNAL //기존 /* sQuery = string.Format(sQuery , m_cTrnStatus.Head.CmpCd // CMP_CD , m_cTrnStatus.Head.StoreCd // STOR_CD , m_cTrnStatus.Head.SaleDate // SALE_DT , m_cTrnStatus.Head.PosNo // POS_NO // , m_cTrnStatus.Head.RegNo // REG_NO , m_cTrnStatus.Head.TradeNo // TRADE_NO , m_cTrnStatus.Head.TradeDiv // TRADE_DIV , m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN , m_cTrnStatus.Head.TradeKind // TRADE_KINDPER , m_cTrnStatus.Head.SysYmd // SYS_DT , m_cTrnStatus.Head.PayHms // SYS_TIME , m_cTrnStatus.Head.CashierId // PIC_NO , m_cTrnStatus.Head.NetSaleAmt // BILL_AMT , sJnlData , "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")); */ //변경 if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1" //grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 start && m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true //grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 end ) { sQuery = string.Format(sQuery , m_cTrnStatus.Head.CmpCd // CMP_CD , m_cTrnStatus.Head.StoreCd // STOR_CD , m_cTrnStatus.Head.SaleDate // SALE_DT , m_cTrnStatus.Head.PosNo // POS_NO // , m_cTrnStatus.Head.RegNo // REG_NO , m_cTrnStatus.Head.TradeNo // TRADE_NO , m_cTrnStatus.Head.TradeDiv // TRADE_DIV , m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN , m_cTrnStatus.Head.TradeKind // TRADE_KINDPER , m_cTrnStatus.Head.SysYmd // SYS_DT , m_cTrnStatus.Head.PayHms // SYS_TIME , m_cTrnStatus.Head.CashierId // PIC_NO , m_cTrnStatus.Head.NetSaleAmt // BILL_AMT , sJnlData //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start // 기존 //, "A", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")); // 변경 , "A", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss") , sHPC_SAVE_APPR_DT , sHPC_SAVE_APPR_NO , sHPC_USE_APPR_DT , sHPC_USE_APPR_NO ); //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end } else { sQuery = string.Format(sQuery , m_cTrnStatus.Head.CmpCd // CMP_CD , m_cTrnStatus.Head.StoreCd // STOR_CD , m_cTrnStatus.Head.SaleDate // SALE_DT , m_cTrnStatus.Head.PosNo // POS_NO // , m_cTrnStatus.Head.RegNo // REG_NO , m_cTrnStatus.Head.TradeNo // TRADE_NO , m_cTrnStatus.Head.TradeDiv // TRADE_DIV , m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN , m_cTrnStatus.Head.TradeKind // TRADE_KINDPER , m_cTrnStatus.Head.SysYmd // SYS_DT , m_cTrnStatus.Head.PayHms // SYS_TIME , m_cTrnStatus.Head.CashierId // PIC_NO , m_cTrnStatus.Head.NetSaleAmt // BILL_AMT , sJnlData //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start // 기존 //, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")); // 변경 , "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss") , sHPC_SAVE_APPR_DT , sHPC_SAVE_APPR_NO , sHPC_USE_APPR_DT , sHPC_USE_APPR_NO ); //grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end } //#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 end // 쿼리 로그, Rhee if (m_cPosStatus.Base.CmpCd.ToUpper().Equals("PCCN")) { UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "@@SaveJnlExecute=" + sQuery); } } m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword); if (m_cSqlDbService.DBExecuteNonQuery(new string[] { sQuery }) == UserCom.OK) return UserCom.RST_OK; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sRet; } /// /// 저널데이터 저장 - 서버에서 조회 (복구용) /// /// /// public string SaveJnlDataExecute(string[] aParam) { string sJnlData = ""; string sRet = UserCom.RST_ERR; try { // 저널데이터 획득 sJnlData = aParam[0]; // 저널데이터 저장 string sQuery = ""; if (m_cDataCommon.TradeNoAddCheck("") == false) { //string sRegNo = string.Empty; //DataTable dt = null; //sQuery = " SELECT ISNULL(MAX(REG_NO),0) AS REG_NO "; //sQuery += " FROM POSLOG..ETC_SALE_HEADER "; //sQuery += " WHERE 1 = 1 "; //sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; //sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "'"; //sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; //sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'"; //int iRet = m_cSqlDbService.DBSelect(sQuery, out dt); //sRegNo = dt.Rows[0]["REG_NO"].ToString(); sQuery += " INSERT INTO POSLOG..ETC_SALE_JOURNAL ( "; sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, REG_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, "; sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE "; sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', "; sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}', '{16}' )"; sQuery = string.Format(sQuery , m_cTrnStatus.Head.CmpCd // CMP_CD , m_cTrnStatus.Head.StoreCd // STOR_CD , m_cTrnStatus.Head.SaleDate // SALE_DT , m_cTrnStatus.Head.PosNo // POS_NO , m_cTrnStatus.Head.RegNo // REG_NO , m_cTrnStatus.Head.TradeNo // TRADE_NO , m_cTrnStatus.Head.TradeDiv // TRADE_DIV , m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN , m_cTrnStatus.Head.TradeKind // TRADE_KINDPER , m_cTrnStatus.Head.SysYmd // SYS_DT , m_cTrnStatus.Head.PayHms // SYS_TIME , m_cTrnStatus.Head.CashierId // PIC_NO , m_cTrnStatus.Head.NetSaleAmt // BILL_AMT , sJnlData , "1", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")); } else { sQuery += " INSERT INTO POSLOG..TR_SALE_JOURNAL ( "; sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, "; sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE "; sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', "; sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}' )"; sQuery = string.Format(sQuery , m_cTrnStatus.Head.CmpCd // CMP_CD , m_cTrnStatus.Head.StoreCd // STOR_CD , m_cTrnStatus.Head.SaleDate // SALE_DT , m_cTrnStatus.Head.PosNo // POS_NO // , m_cTrnStatus.Head.RegNo // REG_NO , m_cTrnStatus.Head.TradeNo // TRADE_NO , m_cTrnStatus.Head.TradeDiv // TRADE_DIV , m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN , m_cTrnStatus.Head.TradeKind // TRADE_KINDPER , m_cTrnStatus.Head.SysYmd // SYS_DT , m_cTrnStatus.Head.PayHms // SYS_TIME , m_cTrnStatus.Head.CashierId // PIC_NO , m_cTrnStatus.Head.NetSaleAmt // BILL_AMT , sJnlData , "1", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")); // 쿼리 로그, Rhee if (m_cPosStatus.Base.CmpCd.ToUpper().Equals("PCCN")) { UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "@@SaveJnlDataExecute=" + sQuery); } } m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword); if (m_cSqlDbService.DBExecuteNonQuery(new string[] { sQuery }) == UserCom.OK) return 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; } /// /// 명판 및 영수증 메시지 출력데이터 생성 /// /// 0:본영수증, 9:기타영수증 /// BILL_PRT_LOC public bool SetStampGuidePrintData(string sPrtID, string sPrtLoc) { string sQuery = ""; try { if (sPrtLoc == PosConst.BILL_PRT_LOC.STAMP) { // 명판 생성 if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN) { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorName); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, "Tel:" + m_cPosStatus.Mst.StorTelNo); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorAddr); } else { //#15274 영수증 문구 추가 요청 start if (m_cPosStatus.Mst.CompNm.Trim() != "") { AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.CompNm); } //#15274 영수증 문구 추가 요청 end AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorName); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorBizPsnNo + " Tel:" + m_cPosStatus.Mst.StorTelNo + " " + m_cPosStatus.Mst.StorOwnName); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorAddr); } AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); return true; } if (m_dtMstBillMsg == null) { sQuery += " SELECT * FROM POSMST..MST_BILL_MSG "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND '" + m_cPosStatus.Base.SaleDate + "' BETWEEN PRT_START_DT AND PRT_FNSH_DT "; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; // 기존 //sQuery += " ORDER BY 1, 2, 3, 4, 5"; // 변경 sQuery += " ORDER BY 3, 4, 5"; m_dtMstBillMsg = m_cMstService.Select(new string[] { sQuery }); } if (m_dtMstBillMsg == null || m_dtMstBillMsg.Rows.Count == 0) return false; bool bExist = false; string sWriteDiv = "1"; // 작성자별 영수증 메시지 출력(1:본사, 2:팀, 3:점포) for (int i = 0; i < 3; i++) { // 영수증 메시지 출력 우선순위 CHAR 1 1:본부/팀/매장, 2:매장/팀/본부 if (i == 0) sWriteDiv = (m_cPosStatus.Mst.BillMsgDupPrtRank == "1") ? "1" : "3"; else if (i == 1) sWriteDiv = "2"; else sWriteDiv = (m_cPosStatus.Mst.BillMsgDupPrtRank == "1") ? "3" : "1"; foreach (DataRow dr in m_dtMstBillMsg.Rows) { if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.PRT_START_DT) == m_cPosStatus.Base.SaleDate && CmUtil.IntParse(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.PRT_START_HOUR)) > CmUtil.IntParse(DateTime.Now.ToString("HHmmss"))) continue; if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.PRT_LOC) != sPrtLoc) continue; if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.WRITE_DIV) != sWriteDiv) continue; // 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대) string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.EXPAND_CHAR), CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.BOLD_YN)); if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.RIGHT) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.CHAR_ROW)); else if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.CENTER) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.CHAR_ROW)); else AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.CHAR_ROW)); bExist = true; } // 영수증 메시지 중복 허용 여부(1:미허용, 1:중복) if (bExist == true && m_cPosStatus.Mst.BillMsgDupPrmtYn == "0") break; } if (bExist == true) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); 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; } /// /// 설문참여 메시지 출력데이터 생성 /// /// 0:본영수증, 9:기타영수증 public bool SetVotePrintData(string sPrtID) { string sQuery = ""; try { if (m_dtMstVoteMsg == null) { sQuery += " SELECT * FROM POSMST..MST_SALESORG_SURVY_MSG "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND '" + m_cPosStatus.Base.SaleDate + "' BETWEEN APPLY_START_DT AND APPLY_FNSH_DT "; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY APPLY_START_DT, PRT_SEQ"; m_dtMstVoteMsg = m_cMstService.Select(new string[] { sQuery }); } if (m_dtMstVoteMsg == null || m_dtMstVoteMsg.Rows.Count == 0) return false; bool bExist = false, bVoteNoPrint = false; for (int i = 0; i < m_dtMstVoteMsg.Rows.Count; i++) { DataRow dr = m_dtMstVoteMsg.Rows[i]; if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.APLY_START_DT) == m_cPosStatus.Base.SaleDate && CmUtil.IntParse(CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.APPLY_START_HOUR)) > CmUtil.IntParse(DateTime.Now.ToString("HHmmss"))) continue; string sDow = CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.DOW); if (sDow.Length >= 7) { DateTime dt = new DateTime(int.Parse(m_cPosStatus.Base.SaleDate.Substring(0, 4)), int.Parse(m_cPosStatus.Base.SaleDate.Substring(4, 2)), int.Parse(m_cPosStatus.Base.SaleDate.Substring(6, 2))); if (sDow.Substring((int)dt.DayOfWeek, 1) == "0") continue; } // 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대) string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.PRT_EXPAND_TYPE) , CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.BOLD_YN)); string sPrtData = CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.MSG_VAL); if (sPrtData.StartsWith("참여코드") == true || sPrtData.StartsWith("참여 코드") == true || sPrtData.StartsWith("설문참여코드") == true || sPrtData.StartsWith("설문 참여 코드") == true) { sPrtData += GetVoteNoPrintData(); // 설문 참여코드 생성 bVoteNoPrint = true; } if (i >= m_dtMstVoteMsg.Rows.Count - 1 && bVoteNoPrint == false) { if (sPrtData.Length <= 20) { sPrtData += GetVoteNoPrintData(); // 마지막 행에 설문 참여코드 생성 } else { if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.RIGHT) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, sPrtData); else if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.CENTER) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, sPrtData); else AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, sPrtData); sPrtData = GetVoteNoPrintData(); // 마지막 행에 설문 참여코드 생성 } } if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.RIGHT) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, sPrtData); else if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.CENTER) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, sPrtData); else AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, sPrtData); bExist = true; } if (bExist == true) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); return true; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return false; } /// /// 설문참여코드 생성 /// /// public string GetVoteNoPrintData() { string sVoteNo = ""; try { string sStoreCd = m_cPosStatus.Base.StoreNo.PadLeft(7, '0').ToUpper(); // 점포코드 7자리로 패딩(대문자로변환) string sBillNo = m_cPosStatus.Base.TradeNo.Substring(m_cPosStatus.Base.TradeNo.Length - 3, 3); // 영수증번호 끝 3자리 string sPosNo = m_cPosStatus.Base.PosNo.Substring(m_cPosStatus.Base.PosNo.Length - 1, 1); // POS번호 끝 1자리 string sSaleDate = m_cPosStatus.Base.SaleDate; // 체크 디지트 계산( 각 자리 별 값 곱함[234569812678957] int nCheckDigit = (CmUtil.IntParse(sSaleDate.Substring(7, 1)) * 2) + // 1. 구매일자 2번째 자리 수 (CmUtil.IntParse(sSaleDate.Substring(6, 1)) * 3) + // 2. 구매일자 1번째 자리 수 ((CmUtil.IntParse(sBillNo.Substring(2, 1)) + 3) * 4) + // 3. 영수증 번호 3번째 자리 수 + 3 : 16진법으로 (GetCharToInt(sStoreCd.Substring(4, 1)) * 5) + // 4. 점포코드 5번째 자리 수 ((CmUtil.IntParse(sBillNo.Substring(0, 1)) + 6) * 6) + // 5. 영수증 번호 1번째 자리 수 + 6 : 16진법으로 (GetCharToInt(sStoreCd.Substring(5, 1)) * 9) + // 6. 점포코드 6번째 자리 수 (CmUtil.IntParse(sSaleDate.Substring(2, 1)) * 8) + // 7. 구매년도 1번째 자리 수 (CmUtil.IntParse(sSaleDate.Substring(3, 1)) * 1) + // 8. 구매년도 2번째 자리 수 (GetCharToInt(sStoreCd.Substring(3, 1)) * 2) + // 9. 점포코드 4번째 자리 수 ((CmUtil.IntParse(sBillNo.Substring(1, 1)) + 1) * 6) + //10. 영수증 번호 2번째 자리 수 + 1 : 16진법으로 (GetCharToInt(sStoreCd.Substring(6, 1)) * 7) + //11. 점포코드 7번째 자리 수 (GetCharToInt(sStoreCd.Substring(2, 1)) * 8) + //13. 점포코드 3번째 자리 수 ((CmUtil.IntParse(sPosNo) + 4) * 9) + //14. 포스 번호 + 4 : 16진법으로 (CmUtil.IntParse(sSaleDate.Substring(5, 1)) * 5) + //15. 구매월 2번째 자리 수 (CmUtil.IntParse(sSaleDate.Substring(4, 1)) * 7); //17. 구매월 1번째 자리 수 nCheckDigit = nCheckDigit % 10; // 합계를 10로 나누어 나머지를 구한다. nCheckDigit = 15 - nCheckDigit; // 15에서 나머지 값을 뺀 값을 최종 Check Digit로 정한다. sVoteNo = sSaleDate.Substring(7, 1) + // 1. 구매일자 2번째 자리 수 sSaleDate.Substring(6, 1) + // 2. 구매일자 1번째 자리 수 GetIntToHex(CmUtil.IntParse(sBillNo.Substring(2, 1)) + 3) + // 3. 영수증 번호 3번째 자리 수 + 3 : 16진법으로 sStoreCd.Substring(4, 1) + '-' + // 4. 점포코드 5번째 자리 수 GetIntToHex(CmUtil.IntParse(sBillNo.Substring(0, 1)) + 6) + // 5. 영수증 번호 1번째 자리 수 + 6 : 16진법으로 sStoreCd.Substring(5, 1) + // 6. 점포코드 6번째 자리 수 sSaleDate.Substring(2, 1) + // 7. 구매년도 1번째 자리 수 sSaleDate.Substring(3, 1) + '-' + // 8. 구매년도 2번째 자리 수 sStoreCd.Substring(3, 1) + // 9. 점포코드 4번째 자리 수 GetIntToHex(CmUtil.IntParse(sBillNo.Substring(1, 1)) + 1) + //10. 영수증 번호 2번째 자리 수 + 1 : 16진법으로 sStoreCd.Substring(6, 1) + //11. 점포코드 7번째 자리 수 GetIntToHex(nCheckDigit) + '-' + //12. CHECK DIGIT : 16진법으로 sStoreCd.Substring(2, 1) + //13. 점포코드 3번째 자리 수 GetIntToHex(CmUtil.IntParse(sPosNo) + 4) + //14. 포스 번호 + 4 : 16진법으로 sSaleDate.Substring(5, 1) + //15. 구매월 2번째 자리 수 //영수증설문조사 오류 수정(20170508-조충연K) //m_cPosStatus.Base.BrandCd.Substring(0, 1) + //16. 회사코드 (P: PC, B: BRK, S:SL) m_cPosStatus.Base.CmpCd.Substring(0, 1) + //16. 회사코드 (P: PC, B: BRK, S:SL) sSaleDate.Substring(4, 1); //17. 구매월 1번째 자리 수 } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return sVoteNo; } //#해피앱 추후적립 start, sskim /// /// 해피앱 추후적립 안내 메세지 출력 /// /// 0:본영수증, 9:기타영수증 public bool SetHpAppAfterSavePrint(string sPrtID) { try { if (m_cTrnStatus.Head.AftSavePoint > 0) { string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst("0", "0"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, "★ 해피앱 영수증적립 서비스 안내"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 해피앱에서 영수증으로 포인트 적립"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 받으세요~"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " "); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, "* 적립방법"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 해피앱 -> 포인트 거래내역(My포인트) ->"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 바코드 스캔 배너 -> 영수증 하단 바코드"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 스캔 -> 포인트 적립"); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " "); AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, "(거래시간 기준 24시간내, 매장당 1일 1회)"); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-"); } 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; } //#해피앱 추후적립 end, sskim //grayber@20171214 캠페인 리펀드 쿠폰 start /// /// 캠페인 리펀드 메시지 출력 ( 상단부 Hard Coding ) /// /// /// public bool SetCpiRefundPrint(string sPrtID) { bool bRes = false; try { if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return bRes; // 영수 캠페인 출력 데이터 설정 ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); ArrayList alPrtBuf = cCampaingMain.GetRefundCampaignPrintData(new string[] { }); // 캠페인 출력 데이터가 없으면 return; if (alPrtBuf == null || alPrtBuf.Count <= 0) return bRes; // 메시지 처리 (HARD Coding) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, "★★★★★★★★★★★★★★★★★★★★★"); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " "); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BLD, PosConst.PRT_FMT.F101, " * 쿠폰금액 : " + CmUtil.MathRounds(CmUtil.DoubleDivision(m_cTrnStatus.Head.NetSaleAmt, 2), PosConst.MATH_ROUND.TRANCATE, -3).ToString("#,##0") + "원"); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BLD, PosConst.PRT_FMT.F101, " * 점 포 명 : " + m_cPosStatus.Mst.StorName); AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " "); foreach (string sPrtData in alPrtBuf) { AddPrintData(sPrtID, sPrtData); } bRes = 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 bRes; } //grayber@20171214 캠페인 리펀드 쿠폰 end /// /// 코드 숫자 변환(설문조사) /// /// public int GetCharToInt(string sStr) { int nRet = 0; try { if (sStr == "") return nRet; if (CmUtil.IsNumber(sStr.Substring(0, 1)) == true) { nRet = CmUtil.IntParse(sStr.Substring(0, 1)); } else { nRet = Convert.ToChar(sStr.Substring(0, 1)); nRet -= 55; } } 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 nRet; } /// /// 숫자 HEX 변환(설문조사) /// /// public string GetIntToHex(int nNum) { string sRet = ""; try { sRet = string.Format("{0:X}", nNum); } 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 bool LoadBillTypeMaster() { string sQuery = ""; try { if (m_dtMstBillType == null) { sQuery += " SELECT * FROM POSMST..MST_BILL_TYPE "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND BILL_TYPE_GRP_CD = '" + CmUtil.GetDataRowStr(PosMstManager.GetMstPos(), PosMst.MST_POS.DATA.BILL_TYPEGRP) + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY 1, 2, 3, 4, 5"; m_dtMstBillType = m_cMstService.Select(new string[] { sQuery }); } if (m_dtMstBillType == null || m_dtMstBillType.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; } /// /// 영수증유형마스터로 상/하단 출력데이터 생성 /// /// 0:본영수증, 9:기타영수증 /// BILL_TYPE_DIV public bool SetBillTypeTopBtmPrintData(string sPrtID, string sBillTypeDiv) { try { // 영수증 유형 마스터 로딩 처리 if (LoadBillTypeMaster() == false) return false; string sCashierName = m_cPosStatus.Base.CashierName; // 판매원명 if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId); // 2019-04-16 - 1997fx11 : 영수증 캐셔명 인쇄 if (string.IsNullOrEmpty(m_cTrnStatus.Head.CashierId)) { sCashierName = "KIOSK"; } string sOrderName = m_cTrnStatus.Head.OrderPicNm; // 담당자명 if (m_cTrnStatus.Head.OrderPicNo.Trim() != "" && m_cTrnStatus.Head.OrderPicNm.Trim() == "") sOrderName = GetCashierName(m_cTrnStatus.Head.OrderPicNo.Trim()); foreach (DataRow dr in m_dtMstBillType.Rows) { if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_DIV) != sBillTypeDiv) continue; string sPrtData = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_TAG); //점포코드 sPrtData = sPrtData.Replace("", m_cPosStatus.Base.StoreNo); //시스템일자 sPrtData = sPrtData.Replace("", m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SysYmd)); //시스템시간 sPrtData = sPrtData.Replace("", CmUtil.StrToTime(m_cTrnStatus.Head.PayHms)); //영업일자 sPrtData = sPrtData.Replace("", m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SaleDate)); //포스번호 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.PosNo); //판매원번호 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.CashierId); //판매원명 sPrtData = sPrtData.Replace("", sCashierName); // 2019-04-16 - 1997fx11 : 영수증 캐셔명 인쇄 //층코드 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.FloorCd); //층명 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.FloorNm); //테이블코드 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.TableNo); //테이블명 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.TableNm); //객층 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.CustFloor); //고객수 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.CustCnt.ToString()); //거래번호 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.TradeNo); //주문자 사번 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.OrderPicNo); //주문자 사명 sPrtData = sPrtData.Replace("", sOrderName); //주문시간 sPrtData = sPrtData.Replace("", CmUtil.StrToTime(m_cTrnStatus.Head.OrderHms)); //주문번호 sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.OrderNo); // 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대) string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.EXPAND_CHAR), CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.BOLD_YN)); string sSortDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.SORT_DIV); if (sSortDiv == PosConst.PRT_ALIGN_TYPE.RIGHT) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, sPrtData); else if (sSortDiv == PosConst.PRT_ALIGN_TYPE.CENTER) AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, sPrtData); else AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, sPrtData); } 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 SetBillTypePaymentPrintData(string sPrtID, string sTypeDiv, ArrayList alPrtTagData) { string sPrtData = "", sData1 = "", sData2 = ""; try { // 영수증 유형 마스터 로딩 처리 if (LoadBillTypeMaster() == false) return; foreach (DataRow dr in m_dtMstBillType.Rows) { if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_DIV) != sTypeDiv) continue; // 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대) string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.SIZE_DIV), CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BOLD_YN)); // 정렬구분 string sSortDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.SORT_DIV); // 태그유형 string sTagData = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_TAG); sData1 = ""; sData2 = ""; bool bExist = false; foreach (string[] aTagData in alPrtTagData) { if (sPrtData.IndexOf(aTagData[0]) >= 0) //태그유형 { sData1 = aTagData[1]; sData2 = aTagData[2]; bExist = true; } } if (bExist == true) { if (sData2 == "") continue; } else sData2 = sTagData; SetBillTypePaymentPrintData(sPrtID, sPrtHead, sSortDiv, sData1.Trim() + (sData1.Length == 0 ? "" : " "), sData2.Trim()); } } 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 SetBillTypePaymentPrintData(string sPrtID, string sPrtHead, string sSortDiv, string sData1, string sData2) { string sPrtData = ""; try { int nFullLen = 42; if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG) nFullLen = 42 / 2; //가로확대, 두배확대 int nHalfLen = nFullLen / 2; switch (sSortDiv) { case PosConst.PRT_ALIGN_TYPE.RIGHT: //오른쪽 if (UsUtil.LenH(sData1.Trim()) + UsUtil.LenH(sData2.Trim()) >= nFullLen) { sPrtData = sData1.Trim() + sData2.Trim(); } else { sPrtData = sData1.Trim() + CmUtil.LPadH(sData2, nFullLen - UsUtil.LenH(sData1.Trim())); } AddPrintData(sPrtID, sPrtHead, UsUtil.LPadH(sPrtData.TrimStart(), nFullLen)); break; case PosConst.PRT_ALIGN_TYPE.CENTER: //가운데 sPrtData = sData1.Trim() + sData2.Trim(); if (UsUtil.LenH(sPrtData) < nFullLen) AddPrintData(sPrtID, sPrtHead, UsUtil.LPadH("", nHalfLen - (UsUtil.LenH(sPrtData) / 2)) + UsUtil.RPadH(sPrtData, nFullLen - (nHalfLen - (UsUtil.LenH(sPrtData) / 2)))); else AddPrintData(sPrtID, sPrtHead, UsUtil.LPadH(sPrtData.Trim(), nFullLen)); break; default: //왼쪽 sPrtData = sData1.Trim() + sData2.Trim(); AddPrintData(sPrtID, sPrtHead, UsUtil.RPadH(sPrtData.TrimEnd(), nFullLen)); 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); } } /// /// 영수증 출력데이터 생성 /// /// 0:본영수증, 9:기타영수증 /// 출력형태(PosConst.PRT_HDR) /// public void AddPrintData(string sPrtID, string sPrtHead, string sPrtData) { try { sPrtData = ((sPrtData.Length == 0) ? " " : sPrtData); switch (sPrtID) { case PosConst.PRT_ITEM.ETC: case PosConst.PRT_ITEM.ETC_TEMP: m_aEtcPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtHead + sPrtData); break; default: m_aRecPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtHead + sPrtData); break; } m_aPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtHead + sPrtData); } 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 AddPrintData(string sPrtID, string sPrtData) { try { sPrtData = ((sPrtData.Length == 0) ? " " : sPrtData); switch (sPrtID) { case PosConst.PRT_ITEM.ETC: m_aEtcPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtData); break; default: m_aRecPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtData); break; } m_aPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtData); } 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:본영수증, 9:기타영수증 /// 출력형태(PosConst.PRT_HDR) /// 출력포멧(PosConst.PRT_FMT) /// public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData) { try { string sPrtData = ""; if (sPrtFmt == PosConst.PRT_FMT.F100 && (sData == "-" || sData == "=")) // 선귿기 { //#20170822 영수증 선귿기 실선('─') -> 점선('-')으로 변경 start //기존 /* if (sPrtHead == PosConst.PRT_HDR.PRT_BLD) for (int i = 1; i <= 21; i++) sPrtData += "━"; else for (int i = 1; i <= 21; i++) sPrtData += "─"; */ //변경 if (sPrtHead == PosConst.PRT_HDR.PRT_BLD) for (int i = 1; i <= 42; i++) sPrtData += "-"; else for (int i = 1; i <= 42; i++) sPrtData += "-"; //#20170822 영수증 선귿기 실선('─') -> 점선('-')으로 변경 end } else if (sPrtFmt == PosConst.PRT_FMT.F100) // 선귿기 { for (int i = 1; i <= 42; i++) sPrtData += sData; } else if (sPrtFmt == PosConst.PRT_FMT.F101) // 왼쪽정렬 { sPrtData = sData; } else if (sPrtFmt == PosConst.PRT_FMT.F102) // 오른쪽 정렬 { sPrtData = CmUtil.LPadH(sData, 42); } else if (sPrtFmt == PosConst.PRT_FMT.F103) // 중앙정렬 { if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG || sPrtHead == PosConst.PRT_HDR.PRT_HRB || sPrtHead == PosConst.PRT_HDR.PRT_BGB) { if (CmUtil.LenH(sData) <= 21) sPrtData = CmUtil.LPadH("", 10 - (CmUtil.LenH(sData) / 2)) + sData; } else { if (CmUtil.LenH(sData) <= 42) sPrtData = CmUtil.LPadH("", 21 - (CmUtil.LenH(sData) / 2)) + sData; } } else { sPrtData = sData; } AddPrintData(sPrtID, sPrtHead, sPrtData); } 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:본영수증, 9:기타영수증 /// 출력형태(PosConst.PRT_HDR) /// 출력포멧(PosConst.PRT_FMT) /// public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2) { string sPrtData = ""; try { if (sPrtFmt == PosConst.PRT_FMT.F200) // 명(31)+금액(11) { if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG) { sPrtData = CmUtil.RPadH(sData1, 10) + CmUtil.LPadH(sData2, 11); } else { sPrtData = CmUtil.RPadH(sData1, 31) + CmUtil.LPadH(sData2, 11); } } if (sPrtFmt == PosConst.PRT_FMT.F201) // 명(31)+금액(11) { if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG) { sPrtData = CmUtil.LPadH(sData1, 10) + CmUtil.LPadH(sData2, 11); } else { sPrtData = CmUtil.LPadH(sData1, 31) + CmUtil.LPadH(sData2, 11); } } else if (sPrtFmt == PosConst.PRT_FMT.F202) //명(20)+데이터(22) { sPrtData = CmUtil.RPadH(sData1, 20) + CmUtil.LPadH(sData2, 22); } else if (sPrtFmt == PosConst.PRT_FMT.F203) //명(16)+데이터(26) { sPrtData = CmUtil.RPadH(sData1, 11) + CmUtil.RPadH(sData2, 31); } else if (sPrtFmt == PosConst.PRT_FMT.F204) //명(20)+데이터(22) { sPrtData = CmUtil.RPadH(sData1, 20) + " " + CmUtil.RPadH(sData2, 21); } else if (sPrtFmt == PosConst.PRT_FMT.F205) // 명(31-우정렬)+금액(11) { sPrtData = CmUtil.LPadH(sData1, 31) + CmUtil.LPadH(sData2, 11); } else if (sPrtFmt == PosConst.PRT_FMT.F206) // 명(20-우정렬)+금액(12) { sPrtData = CmUtil.RPadH(sData1, 20) + CmUtil.LPadH(sData2, 12); } //#20171227, 예약증 양식 출력 Start else if (sPrtFmt == PosConst.PRT_FMT.F207) // 명(16-우정렬)+데이터(26) { sPrtData = CmUtil.RPadH(sData1, 16) + CmUtil.RPadH(sData2, 26); } //#20171227, 예약증 양식 출력 End AddPrintData(sPrtID, sPrtHead, sPrtData); } 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:본영수증, 9:기타영수증 /// 출력형태(PosConst.PRT_HDR) /// 출력포멧(PosConst.PRT_FMT) /// public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2, string sData3) { string sPrtData = ""; try { if (sPrtFmt == PosConst.PRT_FMT.F300) // 3개=>명LPAD(26)+수량(5)+금액(11) { sPrtData = CmUtil.LPadH(sData1, 26) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 11); } if (sPrtFmt == PosConst.PRT_FMT.F301) // 3개=>명RPAD(26)+수량(5)+금액(11) { sPrtData = CmUtil.RPadH(sData1, 26) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 11); } if (sPrtFmt == PosConst.PRT_FMT.F302) // 3개(카드/승인번호용)=>명RPAD(17)+명LPAD(9)+명LPAD(16) { // 카드/승인번호 //Rhee, #2017/08/28 중국 카드번호 프린트 마킹예외처리 Start // 기존 ////sPrtData = CmUtil.RPadH(sData1, 17) + CmUtil.LPadH(sData2, 9) + CmUtil.LPadH(sData3, 16); // 변경 // 마킹된 카드번호 16자리 출력(1234********1234), 1라인은 42Byte if (m_cPosStatus.Base.CmpCd.ToUpper().Equals("PCCN")) { sPrtData = CmUtil.RPadH(sData1, 17) + CmUtil.LPadH(sData2, 16) + CmUtil.LPadH(sData3, 9); } else { sPrtData = CmUtil.RPadH(sData1, 17) + CmUtil.LPadH(sData2, 9) + CmUtil.LPadH(sData3, 16); } //Rhee, #2017/08/28 중국 카드번호 프린트 마킹예외처리 End } if (sPrtFmt == PosConst.PRT_FMT.F303) // 3개(카드/승인번호용)=>명RPAD(17)+명LPAD(9)+명LPAD(16) 2 // 현금반품 내역 추가 20170830 goblin6 { sPrtData = CmUtil.RPadH(sData1, 23) + CmUtil.RPadH(sData2, 8) + CmUtil.LPadH(sData3, 11); } //#20171227, 예약증 양식 출력 Start if (sPrtFmt == PosConst.PRT_FMT.F304) // 3개=>명RPAD(16)+데이터RPAD(9)+데이터RPAD(17) { sPrtData = CmUtil.RPadH(sData1, 16) + CmUtil.RPadH(sData2, 9) + CmUtil.RPadH(sData3, 17); } //#20171227, 예약증 양식 출력 End else if (sPrtFmt == PosConst.PRT_FMT.F103) // 중앙정렬 { if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG) { if (CmUtil.LenH(sData1) <= 21) sPrtData = CmUtil.LPadH("", 10 - (CmUtil.LenH(sData1) / 2)) + sData1; } else { if (CmUtil.LenH(sData1) <= 42) sPrtData = CmUtil.LPadH("", 21 - (CmUtil.LenH(sData1) / 2)) + sData1; } } AddPrintData(sPrtID, sPrtHead, sPrtData); } 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:본영수증, 9:기타영수증 /// 출력형태(PosConst.PRT_HDR) /// 출력포멧(PosConst.PRT_FMT) /// public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2, string sData3, string sData4) { string sPrtData = ""; try { if (sPrtFmt == PosConst.PRT_FMT.F401) // 명(16)+수량(5)+할인(10)+금액(11) { sPrtData = CmUtil.RPadH(sData1, 16) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11); } if (sPrtFmt == PosConst.PRT_FMT.F402) // 명(16)+수량(5)+할인(10)+금액(11) { sPrtData = CmUtil.LPadH(sData1, 16) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11); } if (sPrtFmt == PosConst.PRT_FMT.F403) // 명(우)(2)+수량(19)+할인(10)+금액(11) { sPrtData = CmUtil.LPadH(sData1, 2) + CmUtil.LPadH(sData2, 19) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11); } if (sPrtFmt == PosConst.PRT_FMT.F404) // 명(우)(12)+수량(7)+명(우)(12)+금액(11) { sPrtData = CmUtil.LPadH(sData1, 12) + CmUtil.LPadH(sData2, 7) + CmUtil.LPadH(sData3, 12) + CmUtil.LPadH(sData4, 11); } if (sPrtFmt == PosConst.PRT_FMT.F405) // 명(좌)(10)+명(좌)(15)+명(좌)(10)+명(좌)(7) { sPrtData = CmUtil.RPadH(sData1, 10) + CmUtil.RPadH(sData2, 15) + CmUtil.RPadH(sData3, 10) + CmUtil.RPadH(sData4, 7); } //#17142 [해피오더]POS로그인 시 영수증프린터로 장부재고 자동 출력 start if (sPrtFmt == PosConst.PRT_FMT.F406) // 명(좌)(14)+명(좌)(10)+명(좌)(14)+명(좌)(4) { sPrtData = CmUtil.RPadH(sData1, 14) + CmUtil.RPadH(sData2, 10) + CmUtil.RPadH(sData3, 14) + CmUtil.LPadH(sData4, 4); } //#17142 [해피오더]POS로그인 시 영수증프린터로 장부재고 자동 출력 end AddPrintData(sPrtID, sPrtHead, sPrtData); } 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:본영수증, 9:기타영수증 /// 출력형태(PosConst.PRT_HDR) /// 출력포멧(PosConst.PRT_FMT) /// public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2, string sData3, string sData4, string sData5) { string sPrtData = ""; try { if (sPrtFmt == PosConst.PRT_FMT.F501) // 수량(3)+명(좌)(16)+단가(10)+금액(11)+부가세코드(2) { sPrtData = CmUtil.LPadH(sData2, 3) + CmUtil.RPadH(sData1, 16) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11) + CmUtil.LPadH(sData5, 2); } if (sPrtFmt == PosConst.PRT_FMT.F502) // 과세코드(4)+과세율(11)+순매출액(9)+과세금액(9)+합계(9) { sPrtData = CmUtil.RPadH(sData1, 4) + CmUtil.RPadH(sData2, 11) + CmUtil.LPadH(sData3, 9) + CmUtil.LPadH(sData4, 9) + CmUtil.LPadH(sData5, 9); } AddPrintData(sPrtID, sPrtHead, sPrtData); } 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 WriteReceiptFile(string sFileName, ArrayList alPrtData, string sPrtItem) { try { if (File.Exists(BaseCom.NxDataPath + sFileName) == true) File.Delete(BaseCom.NxDataPath + sFileName); if (alPrtData.Count <= 0) return; FileStream fs = new FileStream(BaseCom.NxDataPath + sFileName, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); try { for (int i = 0; i < alPrtData.Count; i++) { if (alPrtData[i].ToString().StartsWith(PosConst.PRT_ITEM.REC) || alPrtData[i].ToString().StartsWith(PosConst.PRT_ITEM.ETC)) { sw.WriteLine(alPrtData[i].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); } finally { sw.Close(); fs.Close(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 최근 영수증 읽기 /// /// /// protected ArrayList ReadReceiptFile(string sFileName, ArrayList alPrtData) { try { string sFilePath = BaseCom.NxDataPath + sFileName; if (File.Exists(sFilePath) == false) return alPrtData; using (StreamReader sr = new StreamReader(sFilePath, System.Text.Encoding.Default)) { sr.BaseStream.Seek(0, SeekOrigin.Begin); while (sr.Peek() >= 0) { string sLineData = sr.ReadLine(); sLineData = sLineData.Replace(PosConst.PRT_HDR.PRT_REP, PosConst.PRT_HDR.PRT_NOR); alPrtData.Add(sLineData); } } } 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 alPrtData; } private string GetCashierName(string sCashierNo) { try { // 캐셔마스터 조회 IMasterUs cService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.CASHIER_MASTER); DataTable dtDataInfo = cService.Select(new string[] { m_cPosStatus.Base.StoreNo, sCashierNo }); if (dtDataInfo != null && dtDataInfo.Rows.Count > 0) { foreach (DataRow drData in dtDataInfo.Rows) { return CmUtil.GetDataRowStr(drData, PosMst.MST_USER.DATA.CASHIER_NM); } } } 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 ""; } //#20170918 기념일 배송 출력 start protected ArrayList ReadAnniversaryFile(string sFileName, ArrayList alPrtData) { try { string sFilePath = sFileName; // BaseCom.NxDataPath + sFileName; if (File.Exists(sFilePath) == false) return alPrtData; using (StreamReader sr = new StreamReader(sFilePath, System.Text.Encoding.Default)) { sr.BaseStream.Seek(0, SeekOrigin.Begin); while (sr.Peek() >= 0) { string sLineData = sr.ReadLine(); sLineData = sLineData.Replace(PosConst.PRT_HDR.PRT_REP, PosConst.PRT_HDR.PRT_NOR); AddPrintData(PosConst.PRT_ITEM.ETC, PosConst.PRT_HDR.PRT_NOR, sLineData.Trim()); } } } 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 alPrtData; } //#20170918 기념일 배송 출력 end // grayber@20180122 전자영수증 조건 추가 start - 해피앱 전자영수증 사용 여부 확인 함수 /// /// 해피앱 전자영수증 확인 함수 /// /// 전자영수증 사용 유무 (Y:N) public string CheckElectronic_Receipt() { string sElectronic_ReceiptYN = string.Empty; try { if (m_bElectRec == true) { return sElectronic_ReceiptYN = "Y"; } ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem) { 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.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cEtcItem.OCCUR_ENTRY_12 == "Y") { //해피앱 전자발행설정유무 값 sElectronic_ReceiptYN = cEtcItem.OCCUR_ENTRY_23; break; } } } if (sElectronic_ReceiptYN.Equals("Y") == true) return sElectronic_ReceiptYN; ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM); foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem) { if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT) { if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue; if (cPayItem.OCCUR_ENTRY_12 == "Y") { sElectronic_ReceiptYN = cPayItem.OCCUR_ENTRY_23; break; } } } return sElectronic_ReceiptYN; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "Electronic_Receipt : " + sElectronic_ReceiptYN + "", ex.Message); return sElectronic_ReceiptYN; } } // grayber@20180122 전자영수증 조건 추가 end //#20180202 결제영수증 발행 안해도 직전영수증 발행시 해당 영수증 출력 start /// /// 영수증 저장 처리 /// public void SaveReceiptFile() { try { // 추후적립일때 직전영수증 파일 저장 안함(2017.07.21) if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.AFTER.HP_SAVE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.AFTER.CASH_RECEIPT) { WriteReceiptFile("PRT_REC.TXT", m_aRecPrintBuf, PosConst.PRT_ITEM.REC); } } 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 결제영수증 발행 안해도 직전영수증 발행시 해당 영수증 출력 end } }