using System; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Collections; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 영수증 반품 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Win { public partial class frmReJournal : Form { #region Variable private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조 private DeviceStatus m_cDevStatus = new DeviceStatus(); // 디바이스 관리 private PosOLEDevice.DelegateOlePos delegatePos; private ISaleCompleteUs cSaleComplete = null; private IDataProcessUs m_cDataService = null; private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 private ISaleReceipt m_cTradeDeal = null; private ISaleRefundUs m_cSaleRefund = null; // 반품처리 private IHpAfterSaveUs m_cHpAfterSave = null; // HP 사후적립 //#20180322 휴게소pos매출연동 start,phj private IDatabaseSQL m_cSqlDbService = null; //#20180322 휴게소pos매출연동 end,phj /// /// 영수증 리스트 /// private DataTable m_dtSearchList; /// /// 서버 거래 호출 여부 /// private bool m_bServerTranCall = false; private string m_CallBiz = ""; // 호출 화면 구분(판매일때만 복원 보이기하기 위해!) public string SetCallBiz { set { this.m_CallBiz = value; } } private bool bDoubleClick = false; #endregion #region 생성자 & 소멸자 /// /// 생성자 /// public frmReJournal() { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); //this.UpdateStyles(); m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDevStatus = (DeviceStatus)StateObject.DEVICE; delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent); m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cTradeDeal = (ISaleReceipt)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.SALE_RECEIPT); m_cSaleRefund = (ISaleRefundUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_REFUND); m_cHpAfterSave = (IHpAfterSaveUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HP_AFTER_SAVE); cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); //#20180322 휴게소pos매출연동 start,phj m_cSqlDbService = (IDatabaseSQL)sManager.InitServiceInstance(ServiceLists.AGENT_DATABASE.DLL, ServiceLists.AGENT_DATABASE.DATABASE_MSSQL); //#20180322 휴게소pos매출연동 end,phj GetBtnImg(); //버튼이미지로드 } /// /// 폼로드 /// /// /// private void frmReJournal_Load(object sender, EventArgs e) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ""); InitControl(); } /// /// 폼클로즈 /// /// /// private void frmReJournal_FormClosing(object sender, FormClosingEventArgs e) { vScrollbar.Attach(null); m_CallBiz = ""; UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text); } /// /// 폼엑티브 /// /// /// private void frmReJournal_Activated(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(delegatePos); } /// /// 폼디엑티브 /// /// /// private void frmReJournal_Deactivate(object sender, EventArgs e) { PosOLEDevice.SetEventHandle(null); } #endregion 생성자 & 소멸자 #region 폼 컨트롤 초기화 /// /// 폼 컨트롤 초기화 /// private void InitControl() { try { // 이미지 로딩 처리 picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_800X600); btnDate.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.ICON_DATE_BASIC); //FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser); FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT); FormManager.SetTextBoxGlobalInfo(this, m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits, m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol , m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits, m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol); txtPrtData.Font = new Font(m_cPosStatus.Base.FONT_FIX, txtPrtData.Font.Size, txtPrtData.Font.Style); btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE); if (btnExit.Image != null) btnExit.Text = ""; //테마색상 적용! btnPrint.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor); btnPluLoad.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor); lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0324); lblSaleDate.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0242); lblPosNo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0370); //lblTradeNo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0346); lblTradeType.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0371); btnSearch.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0004); btnPrint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0257); btnSmiPrint.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0881); btnPluLoad.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0372); btnAfCash.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0065); btnAfPnt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0789); //#20180322 휴게소pos매출연동 start,phj btnRestAreaPos.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0874); //#20180322 휴게소pos매출연동 end,phj txtSaleDate.InputTypeFormat = m_cPosStatus.Global.m_stCultureMaster.strDatePattern; txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(m_cPosStatus.Base.SaleDate); //dtSaleDate.Value = DateTime.ParseExact(m_cPosStatus.Base.SaleDate, "yyyyMMdd", null); txtPrtData.Text = ""; txtPosNo.Text = m_cPosStatus.Base.PosNo; InitializeGrid(); InitComboBox(); m_bServerTranCall = false; //if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE) //{ // btnPluLoad.Visible = false; // txtBarCode.Size = new Size(420, 40); //} //else //{ // btnPluLoad.Visible = true; // txtBarCode.Size = new Size(311, 40); //} //#20180322 휴게소pos매출연동 start,phj btnRestAreaPos.Visible = false; PnlRestposResend.Visible = false; if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_KOR_03) { InitRestposResend(); btnResend.Visible = true; btnResendClose.Visible = true; PnlRestposResend.Left = txtPrtData.Left; //PnlRestposResend.Width = txtPrtData.Width; PnlRestposResend.Top = txtBarCode.Top; PnlRestposResend.Height = txtBarCode.Height; btnRestAreaPos.Visible = true; } //#20180322 휴게소pos매출연동 end,phj btnAfCash.Visible = false; btnAfPnt.Visible = false; txtSaleDate.ReadOnly = false; btnDate.Enabled = true; vScrollbar.Attach(txtPrtData); bDoubleClick = false; if (m_CallBiz == "") { txtBarCode.Visible = false; btnPluLoad.Visible = false; } else { txtBarCode.Visible = true; btnPluLoad.Visible = true; txtBarCode.Text = ""; txtBarCode.Select(); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20180322 휴게소pos매출연동 start,phj private void InitRestposResend() { try { cmbRestposResend.Items.Clear(); cmbRestposResend.Items.Add(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1115));//전체 재전송 cmbRestposResend.Items.Add(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1116));//단건 재전송 cmbRestposResend.Items.Add(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1117));//정산 재전송 cmbRestposResend.SelectedIndex = 0; } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20180322 휴게소pos매출연동 end,phj /// /// 그리드 초기화 /// private void InitializeGrid() { try { grdSearchList.CsmGridColumnHeadersVisible = true; //DataGridView 자체의 컬럼 헤더 Visible 여부 grdSearchList.CsmGridColumnHeadersFont = new Font(m_cPosStatus.Base.FONT, 12); grdSearchList.CsmGridColumnHeadersHeight = 38; //DataGridView 자체의 컬럼 헤더 높이 grdSearchList.CsmGridRowsHeight = 35; grdSearchList.CsmGridColumnCount = 16; //그리드의 컬럼수 grdSearchList.CsmGridShowPageRowsCount = 9; //그리드의 한 화면에 보이는 로우수 grdSearchList.CsmGridSetHeaderBackColor(236, 238, 239); //그리드 헤더 배경색 grdSearchList.CsmGridDefaultRowBackColor = Color.FromArgb(255, 255, 255); //그리드 홀수(Default)행의 배경색 지정 grdSearchList.CsmGridAlternateRowBackColor = Color.FromArgb(251, 253, 255); //그리드 짝수(Alternate)행의 배경색 지정 grdSearchList.CsmGridBackGroundColor = Color.FromArgb(251, 253, 255); //기본 백그라운드 컬러 grdSearchList.CsmGridHighlightColor = Color.FromArgb(255, 251, 211); //그리드 선택 백 컬러 grdSearchList.CsmGridHighlightTextColor = Color.Black; //그리드 선택 글자 컬러 grdSearchList.CsmGridSetColumnWidth(new int[] { 100, 50, 100, 80, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0 }); //컬럼넓이 지정 grdSearchList.CsmGridAlignment(new int[] { 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1 }); //컬럼 정렬 0:왼쪽, 1:가운데, 2:오른쪽 //각 컬럼별 이름 지정(영업일자,POS번호,판매금액,거래번호,거래시간,거래구분,) grdSearchList.CsmGridColumnName(0, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0242)); grdSearchList.CsmGridColumnName(1, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0377)); grdSearchList.CsmGridColumnName(2, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0348)); grdSearchList.CsmGridColumnName(3, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0378)); grdSearchList.CsmGridColumnName(4, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0347)); grdSearchList.CsmGridColumnName(5, "TRADE_KIND"); grdSearchList.CsmGridColumnName(6, "ORG_INFO"); grdSearchList.CsmGridColumnName(7, "RTN_INFO"); grdSearchList.CsmGridColumnName(8, "AF_CASH"); grdSearchList.CsmGridColumnName(9, "AF_POINT"); grdSearchList.CsmGridColumnName(10, "CASH_APP_AMT"); grdSearchList.CsmGridColumnName(11, "NET_SALE_AMT"); grdSearchList.CsmGridColumnName(12, "TOT_VAT"); grdSearchList.CsmGridColumnName(13, "AF_ACCUM_POINT_AMT"); grdSearchList.CsmGridColumnName(14, "AF_ACCUM_POINT_INFO"); grdSearchList.CsmGridColumnName(15, "SYS_DT"); //그리드 초기화 테이블 m_dtSearchList = new DataTable("REFUND_INIT"); m_dtSearchList.Columns.Add(new DataColumn("SALE_DT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("POS_NO", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("TOTSALE_AMT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("TRADE_NO", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("SYS_TIME", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("TRADE_KIND", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("ORG_INFO", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("RTN_INFO", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("AF_CASH", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("AF_POINT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("CASH_APP_AMT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("NET_SALE_AMT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("TOT_VAT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("AF_ACCUM_POINT_AMT", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("AF_ACCUM_POINT_INFO", typeof(string))); m_dtSearchList.Columns.Add(new DataColumn("SYS_DT", typeof(string))); m_dtSearchList.Clear(); } 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 InitComboBox() { try { cbTradeType.Items.Clear(); cbTradeType.Items.Add("0. " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0226)); //cbTradeType.Items.Add("1. " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0076)); cbTradeType.Items.Add("2. " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0075)); cbTradeType.Items.Add("3. " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0345)); cbTradeType.SelectedIndex = 0; } 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 GetBtnImg() { try { //승인 종류 버튼 테마색상 적용! if (m_cPosStatus.ScnMst.ThemeColor.Length == 9) { btnPrint.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor); btnPluLoad.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor); } //네이게이션 버튼 이미지 적용! btnUp.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_UP1_BASIC); btnUp.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_UP1_PRESS); btnUp2.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_UP2_BASIC); btnUp2.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_UP2_PRESS); btnDw.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_DOWN1_BASIC); btnDw.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_DOWN1_PRESS); btnDw2.DefaultImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_DOWN2_BASIC); btnDw2.ClickImage = CmUtil.LoadImage(BaseCom.NxImgPath + ImageManager.NAVIBTN_105X48_DOWN2_PRESS); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion #region Control Event #region 버튼 입력 처리 /// /// 버튼 입력 처리 /// /// /// private void btnProc_Click(object sender, EventArgs e) { try { string sPosMenuKeyIn = string.Empty; if (bDoubleClick == true) return; bDoubleClick = true; if (((Cosmos.UI.CsmButton)sender) == btnAfCash) { //#20171227 인천공항 포스연동 start, phj if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") { WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745); return; } //#20171227 인천공항 포스연동 end, phj sPosMenuKeyIn = PosKey.MENU_KEY.CASH_APPROVAL_LATER; } else if (((Cosmos.UI.CsmButton)sender) == btnAfPnt) { sPosMenuKeyIn = PosKey.MENU_KEY.HPP_APPROVAL_LATER; } // 현금영수증추후발행/포인트추후적립 에 대해 권한 체크 추가(2017.07.10) if (WinBasic.CheckMenuKeyAuth(sPosMenuKeyIn) == false) return; if (((Cosmos.UI.CsmButton)sender) == btnSearch) // 조회 { TradeDealSearch("", "", "", ""); } else if (((Cosmos.UI.CsmButton)sender) == btnPrint || ((Cosmos.UI.CsmButton)sender) == btnSmiPrint) // 출력 { PrintTradeDeal(((Cosmos.UI.CsmButton)sender).Name); } else if (((Cosmos.UI.CsmButton)sender) == btnPluLoad) // 내역복원 { LoadPluTrade(); } else if (((Cosmos.UI.CsmButton)sender) == btnAfCash) // 현금영수증 추후 발행 { CompleteCashTrade(); } else if (((Cosmos.UI.CsmButton)sender) == btnAfPnt) // 포인트 추후 발행 { CompleteTrade(); } //#20180322 휴게소pos매출연동 start,phj else if (((Cosmos.UI.CsmButton)sender) == btnRestAreaPos) // 도로공사휴게소POS { RestposResend("0"); } else if (((Cosmos.UI.CsmButton)sender) == btnResend) // 도로공사휴게소POS재전송- 재전송 { RestposResend("1"); } else if (((Cosmos.UI.CsmButton)sender) == btnResendClose)// 도로공사휴게소POS재전송- 닫기 { RestposResend("2"); } //#20180322 휴게소pos매출연동 end,phj else if (((Cosmos.UI.CsmButton)sender) == btnExit) { m_cDataService.TranComplete(); this.DialogResult = DialogResult.Cancel; this.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); } finally { bDoubleClick = false; } } /// /// 조회 그리드 업/다운 클릭 이벤트 /// /// /// private void btnSelProc_Click(object sender, EventArgs e) { try { if ((UI.CsmButton)sender == btnUp2) { grdSearchList.CsmGridScroll("PAGE UP"); } else if ((UI.CsmButton)sender == btnUp) { grdSearchList.CsmGridScroll("UP"); } else if ((UI.CsmButton)sender == btnDw) { grdSearchList.CsmGridScroll("DOWN"); } else if ((UI.CsmButton)sender == btnDw2) { grdSearchList.CsmGridScroll("PAGE DOWN"); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion /// /// 그리드 클릭 이벤트 /// /// /// private void grdSearchItem_GridClickEvent(object sender, string rowIndex) { try { txtPrtData.Text = ""; txtPrtData.Tag = ""; if (grdSearchList.CsmGridRowsCount == 0) return; int nRow = grdSearchList.CsmGridSelectedRowIndex; if (nRow < 0) return; //(영업일자,POS번호,판매금액,거래번호,거래시간,거래구분) string sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); string sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); string sNetAmt = grdSearchList.CsmGridGetCell(nRow, 2); string sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); string sTradeKind = grdSearchList.CsmGridGetCell(nRow, 5); string sOrgInfo = grdSearchList.CsmGridGetCell(nRow, 6); string sRtnInfo = grdSearchList.CsmGridGetCell(nRow, 7); string sAfCash = grdSearchList.CsmGridGetCell(nRow, 8); string sAfPnt = grdSearchList.CsmGridGetCell(nRow, 9); string sSysDate = grdSearchList.CsmGridGetCell(nRow, 15); if (sSysDate != DateTime.Now.ToString("yyyyMMdd")) { //거래 시스템일자 와 금일과 같지 않으면 비활성화! btnAfCash.Visible = false; //btnAfPnt.Visible = false; } else { //현금영수증 추후 발행 활성화 if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && sAfCash == "0" && sTradeKind.StartsWith(ItemConst.TRAN_DIV.NORMAL) == true && sRtnInfo == "") btnAfCash.Visible = true; else btnAfCash.Visible = false; } //포인트 추후 발행 활성화 if (sAfPnt == "0" && sTradeKind.StartsWith(ItemConst.TRAN_DIV.NORMAL) == true && sRtnInfo == "") btnAfPnt.Visible = true; else btnAfPnt.Visible = false; // 저널 데이터 조회 string sJnlData = m_cSaleRefund.SearchPrintSaleReceiptDetail(sSaleDate, sPosNo, sTradeNo); string sJnlText = ""; if ( sTradeKind.StartsWith(ItemConst.TRAN_DIV.REFUND) == true) { // 반품 영수증 sJnlText += MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0249) + PosConst.CRLF; if (sOrgInfo.Length >= 15) sJnlText += " " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0250) + " " + sOrgInfo.Substring(0, 8) + "-" + sOrgInfo.Substring(8, 2) + "-" + sOrgInfo.Substring(10, 5) + PosConst.CRLF + PosConst.CRLF; } else if (sRtnInfo != "") { // 반품된 영수증 sJnlText += MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0251) + PosConst.CRLF; if (sRtnInfo.Length >= 15) sJnlText += " " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0252) + " " + sRtnInfo.Substring(0, 8) + "-" + sRtnInfo.Substring(8, 2) + "-" + sRtnInfo.Substring(10, 5) + PosConst.CRLF + PosConst.CRLF; } int iDataLen = 0; //1.추후적립 내역이 있는지 확인 한다! //2.데이터를 담아 둔다(커팅 제외) //3.원거래 읽어 온다 //4.1 추후가 있으면 바코드 또는 고객용을 체크한다 //4.2 추후영수증을 넣는다. //4.3 추후가 없으면 현재 영수증을 넣는다. string sAfterJnlData = ""; string sAfterJnlText = ""; // 추후적립 내역 //ISaleCompleteUs cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); string sAftData = cSaleComplete.AddHappyPointAfterSave(sSaleDate, sPosNo, sTradeNo); if (sAftData != "") { //string sLine = ""; //string sLine1 = ""; iDataLen = 0; while (iDataLen <= CmUtil.LenH(sAftData)) { //if (iDataLen == 0) //{ // sLine = CmUtil.MidH(sAftData, iDataLen + 5, 42) + PosConst.CRLF; // sLine1 = CmUtil.MidH(sAftData, iDataLen, 47); //} //else //{ string tt = CmUtil.MidH(sAftData, iDataLen + 5, 42); if (CmUtil.MidH(sAftData, iDataLen + 5, 42).Trim() != "") { sAfterJnlText += CmUtil.MidH(sAftData, iDataLen + 5, 42) + PosConst.CRLF; if (CmUtil.MidH(sAftData, iDataLen, 5) != PosConst.PRT_HDR.PRT_CUT) { sAfterJnlData += CmUtil.MidH(sAftData, iDataLen, 47); } } //} iDataLen += 47; } //sAfterJnlText += sLine; //sAfterJnlData += sLine1; } string sPrtJnlData = ""; iDataLen = 0; // 저널 텍스트 편집 while (iDataLen <= CmUtil.LenH(sJnlData)) { string sJnlHdr = CmUtil.MidH(sJnlData, iDataLen, 5); if (sJnlHdr == PosConst.PRT_HDR.PRT_HOR || sJnlHdr == PosConst.PRT_HDR.PRT_BIG) { if (m_cDataService.DoubleParse(CmUtil.MidH(sJnlData, iDataLen + 5 + 11, 11).Trim()) != 0) sJnlText += CmUtil.MidH(sJnlData, iDataLen + 5, 11) + CmUtil.LPadH(CmUtil.MidH(sJnlData, iDataLen + 5 + 11, 11), 32) + PosConst.CRLF; else sJnlText += CmUtil.MidH(sJnlData, iDataLen + 5, 42) + PosConst.CRLF; } //#20180625 영수증반품, 영수증재발행에서 영수증 조회시 추후적립내역 미표시 증상 수정 start //기존 //else if (sAfterJnlText != "" && (sJnlHdr == PosConst.PRT_HDR.PRT_BA1 || CmUtil.MidH(sJnlData, iDataLen + 5, 42).Trim().Replace("[", "").StartsWith(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0136)))) //변경 else if (sAfterJnlText != "" && (sJnlHdr == PosConst.PRT_HDR.PRT_BA1 || sJnlHdr == PosConst.PRT_HDR.PRT_BAR || CmUtil.MidH(sJnlData, iDataLen + 5, 42).Trim().Replace("[", "").StartsWith(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0136)))) //#20180625 영수증반품, 영수증재발행에서 영수증 조회시 추후적립내역 미표시 증상 수정 end { sJnlText += sAfterJnlText; sPrtJnlData += sAfterJnlData; sJnlText += CmUtil.MidH(sJnlData, iDataLen + 5, 42) + PosConst.CRLF; sAfterJnlText = ""; sAfterJnlData = ""; } else { sJnlText += CmUtil.MidH(sJnlData, iDataLen + 5, 42) + PosConst.CRLF; } sPrtJnlData += CmUtil.MidH(sJnlData, iDataLen, 47); //#Rhee 20180308 미주 영수증 미리보기창에서 영수증 번호 표기 추가 Start if ((iDataLen) == 329 && m_cPosStatus.Base.CmpCd.Equals("PCUS")) { sJnlText += "Bill number : " + sTradeNo + " " + PosConst.CRLF; } //#Rhee 20180308 미주 영수증 미리보기창에서 영수증 번호 표기 추가 End iDataLen += 47; } txtPrtData.Text = sJnlText; txtPrtData.Tag = sPrtJnlData; } 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 Control_SelectedIndexChanged(object sender, EventArgs e) { txtBarcodeSetFocus(); } private void txtPrtData_Enter(object sender, EventArgs e) { txtBarcodeSetFocus(); } private void grdSearchList_Enter(object sender, EventArgs e) { txtBarcodeSetFocus(); } private void txtBarcodeSetFocus() { try { txtBarCode.Text = ""; txtBarCode.Focus(); } catch { } } #endregion #region User Method /// /// 거래 데이터 조회 /// private void TradeDealSearch(string sSaleDate, string sPosNo, string sTradeNo, string sPayTime) { try { if (sSaleDate == "" && txtSaleDate.Text.Length != 10) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0186)); return; } m_bServerTranCall = false; txtPrtData.Text = ""; txtPrtData.Tag = ""; m_dtSearchList.Clear(); string sTradeType = "0"; if ( sSaleDate == "") { sSaleDate = m_cPosStatus.Global.CultureToDate(txtSaleDate.Text); //sSaleDate = dtSaleDate.Value.ToString("yyyyMMdd"); //sPosNo = m_cPosStatus.Base.PosNo; sPosNo = txtPosNo.Text; sTradeNo = ""; sTradeType = cbTradeType.Text.Substring(0, 1); } // 거래데이터 조회 DataTable dtData = m_cTradeDeal.SearchSaleReceiptList(sSaleDate, sPosNo, sTradeNo, sPayTime, sTradeType); if (dtData != null && dtData.Rows.Count > 0) { foreach (DataRow dr in dtData.Rows) { DataRow drNewRow = m_dtSearchList.NewRow(); drNewRow["SALE_DT"] = m_cPosStatus.Global.DateToCulture(CmUtil.GetDataRowStr(dr, "SALE_DT")); drNewRow["POS_NO"] = CmUtil.GetDataRowStr(dr, "POS_NO"); int nSign = CmUtil.GetDataRowStr(dr, "TRADE_DIV") == "1" ? -1 : 1; drNewRow["TOTSALE_AMT"] = m_cPosStatus.Global.NumericTOCurrency(CmUtil.GetDataRowDouble(dr, "NET_SALE_AMT") * nSign); drNewRow["TRADE_NO"] = CmUtil.GetDataRowStr(dr, "TRADE_NO"); drNewRow["SYS_TIME"] = CmUtil.StrToTime(CmUtil.GetDataRowStr(dr,"PAY_TIME")); drNewRow["TRADE_KIND"] = CmUtil.GetDataRowStr(dr,"TRADE_DIV") + CmUtil.GetDataRowStr(dr,"TRADE_KINDPER"); drNewRow["ORG_INFO"] = CmUtil.GetDataRowStr(dr,"ORG_INFO"); drNewRow["RTN_INFO"] = CmUtil.GetDataRowStr(dr,"RTN_INFO"); drNewRow["AF_CASH"] = CmUtil.GetDataRowStr(dr, "AF_CASH"); drNewRow["AF_POINT"] = CmUtil.GetDataRowStr(dr, "AF_POINT"); drNewRow["CASH_APP_AMT"] = CmUtil.GetDataRowStr(dr, "CASH_APP_AMT"); drNewRow["NET_SALE_AMT"] = CmUtil.GetDataRowStr(dr, "NET_SALE_AMT"); drNewRow["TOT_VAT"] = CmUtil.GetDataRowStr(dr, "TOT_VAT"); drNewRow["AF_ACCUM_POINT_AMT"] = CmUtil.GetDataRowStr(dr, "AF_ACCUM_POINT_AMT"); drNewRow["AF_ACCUM_POINT_INFO"] = CmUtil.GetDataRowStr(dr, "AF_ACCUM_POINT_INFO"); drNewRow["SYS_DT"] = CmUtil.GetDataRowStr(dr, "SYS_DT"); m_dtSearchList.Rows.Add(drNewRow); } } else { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0302)); } //그리드 적용 grdSearchList.CsmGridDataSource = m_dtSearchList; grdSearchList.CsmGridIndicateForeColor = Color.Red; if (dtData != null && dtData.Rows.Count > 0) { int nRow = 0; foreach (DataRow dr in dtData.Rows) { if (CmUtil.GetDataRowStr(dr, "TRADE_DIV") == "1" || CmUtil.GetDataRowStr(dr, "RTN_INFO") != "") grdSearchList.CsmGridIndicateRow(nRow, true); nRow++; } } grdSearchList.CsmGridSelectRow(0); //grdSearchItem_GridClickEvent(null, null); } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } /// /// 보류 영수증 출력 /// /// private bool PrintTradeDeal(string sName) { bool bRet = false; string sTmpDate = ""; string sPrtData = ""; try { if (txtPrtData.Tag.ToString() == "") { return bRet; } sTmpDate = txtPrtData.Tag.ToString(); if (sName == "btnSmiPrint") { bool bSkip = false; int iDataLen = 0; while (iDataLen <= CmUtil.LenH(sTmpDate)) { string sLineData = CmUtil.MidH(sTmpDate, iDataLen , 47); if (sLineData.Substring(5).Trim().StartsWith(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0101))) //시작 { bSkip = true; } else if (sLineData.Substring(5).Trim().StartsWith(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0007))) //종료 { bSkip = false; } if (bSkip == false) sPrtData += sLineData; iDataLen += 47; } } else { sPrtData = txtPrtData.Tag.ToString(); } bRet = m_cTradeDeal.PrintSaleReceipt(sPrtData); int nRow = grdSearchList.CsmGridSelectedRowIndex; string sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); string sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); string sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); //기타 헤더 저장! cSaleComplete.EtcLogTrSave(ItemConst.TRAN_KIND.LOG.RE_PRINT, false, sSaleDate, sPosNo, sTradeNo); } 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; } //#20180322 휴게소pos매출연동 start,phj /// /// 도로공사 POS 재전송 /// /// private void RestposResend(string sType) { string sSaleDate = string.Empty; string sPosNo = string.Empty; string sTradeNo = string.Empty; string sReSendTp = string.Empty; string sMsg = string.Empty; int nRow = -1; try { if (m_cPosStatus.RestAreaPos.RestAreaPosDir == "" || m_cPosStatus.RestAreaPos.RestAreaPosGroupCd == "" || m_cPosStatus.RestAreaPos.RestAreaPosPosGroupCd == "" || m_cPosStatus.RestAreaPos.RestAreaPosCd == "" || m_cPosStatus.RestAreaPos.RestAreaPosPosNo == "") { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0771)); return; } if (grdSearchList.CsmGridRowsCount == 0) { WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0302)); return; } if (sType == "0") { cmbRestposResend.SelectedIndex = 0; PnlRestposResend.Visible = true; // 20180404 두번째 화면 오픈 시 패널이 뒤로 숨는 현상 수정. btnRestAreaPos.Visible = false; } else if (sType == "1") { nRow = grdSearchList.CsmGridSelectedRowIndex; if (nRow < 0) { return;} sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); sReSendTp = cmbRestposResend.SelectedIndex.ToString(); // 재전송타입 (0: 전체 재전송 , 1:단 건 재전송 , 2 : 정산 재전송) if (sReSendTp == ItemConst.RESTPOS_RESEND.EACH_RESEND) { sMsg = grdSearchList.CsmGridGetCell(nRow, 0) + " BILL: " + sTradeNo + " POS: " + sPosNo + PosConst.CRLF + cmbRestposResend.Items[cmbRestposResend.SelectedIndex].ToString() + " " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0773); } else { sMsg = grdSearchList.CsmGridGetCell(nRow, 0) + " POS: " + sPosNo + PosConst.CRLF + cmbRestposResend.Items[cmbRestposResend.SelectedIndex].ToString() + " " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0773); } if (WinManager.QuestionMessage(sMsg) != true) return; UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", " 도로공사 휴게소POS 재전송 시도! " + " 영업일자:" + sSaleDate + " 영수증번호:" + sTradeNo + " 포스번호:" + sPosNo + " 타입:" + sReSendTp + "(0:전체,1:단건)"); if (sReSendTp == ItemConst.RESTPOS_RESEND.ADMT_RESEND) { //고속도로 휴게소 입점 POS (2018) ICalDataIF cCalDataIF = (ICalDataIF)sManager.InitServiceInstance(ServiceLists.BSV_OPEN_CLOSE.DLL, ServiceLists.BSV_OPEN_CLOSE.CAL_DATA_IF); cCalDataIF.Execute(new string[] { "EX2018", sSaleDate }); } else { RestAreaPosReSend(sReSendTp, sSaleDate, sPosNo, sTradeNo); } } else if (sType == "2") { //닫기 cmbRestposResend.SelectedIndex = 0; PnlRestposResend.Visible = false; // 20180404 두번째 화면 오픈 시 패널이 뒤로 숨는 현상 수정. btnRestAreaPos.Visible = 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); } } //#20180322 휴게소pos매출연동 end,phj /// /// 추후 적립 처리 /// /// private bool CompleteTrade() { bool bRet = false; try { if (grdSearchList.CsmGridRowsCount == 0) return false; int nRow = grdSearchList.CsmGridSelectedRowIndex; if (nRow < 0) return false; //영업일자,POS번호,판매금액,거래번호,거래시간,사후적립금액,추가적립정보 string sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); string sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); string sNetSaleAmt = grdSearchList.CsmGridGetCell(nRow, 11); string sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); string sTradeTm = grdSearchList.CsmGridGetCell(nRow, 4); string sPointAmt = grdSearchList.CsmGridGetCell(nRow, 13); string sPointInfo = grdSearchList.CsmGridGetCell(nRow, 14); string sSysDate = grdSearchList.CsmGridGetCell(nRow, 15); double nAddHours = CmUtil.LongParse(PosMstManager.GetPosOption(POS_OPTION.OPT016)); if (nAddHours == 24) //24일경우 당일만 { if (CmUtil.LongParse(sSysDate) != CmUtil.LongParse(DateTime.Now.ToString("yyyyMMdd"))) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0395); return false; } } else if (nAddHours > 0) { DateTime dtSaleDT = new DateTime(CmUtil.IntParse(sSysDate.Substring(0, 4)), CmUtil.IntParse(sSysDate.Substring(4, 2)), CmUtil.IntParse(sSysDate.Substring(6, 2)), CmUtil.IntParse(sTradeTm.Substring(0, 2)), CmUtil.IntParse(sTradeTm.Substring(2, 2)), 0); if (dtSaleDT.AddHours(nAddHours) < DateTime.Now) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0395); return false; } } if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0270) != true) return bRet; // 추후적립 가능 여부 체크 처리 bRet = m_cHpAfterSave.ChekcAfterSaveTran(sSaleDate, sPosNo, sTradeNo); if (bRet == false) return bRet; // 추후 적립 처리(중국 추후적립 2017.06.02) if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN) { frmPointHappyPointAfter_China fFormPay = (frmPointHappyPointAfter_China)FormManager.GetForm(FormManager.FORM_POINT_HAPPYPOINT_AFTER); if (fFormPay == null) { fFormPay = new frmPointHappyPointAfter_China(); FormManager.AddForm(FormManager.FORM_POINT_HAPPYPOINT_AFTER, fFormPay); } fFormPay.SaleDateTime = m_cPosStatus.Global.DateToCulture(sSaleDate) + " " + CmUtil.StrToTime(sTradeTm); fFormPay.NetSaleAmt = m_cDataService.DoubleParse(sNetSaleAmt); fFormPay.AfterSaveAmt = m_cDataService.DoubleParse(sPointAmt); fFormPay.AfterSaveInfo = sPointInfo; if (fFormPay.ShowDialog() != DialogResult.OK) return false; } else { frmPointHappyPointAfter fFormPay = (frmPointHappyPointAfter)FormManager.GetForm(FormManager.FORM_POINT_HAPPYPOINT_AFTER); if (fFormPay == null) { fFormPay = new frmPointHappyPointAfter(); FormManager.AddForm(FormManager.FORM_POINT_HAPPYPOINT_AFTER, fFormPay); } fFormPay.SaleDateTime = m_cPosStatus.Global.DateToCulture(sSaleDate) + " " + CmUtil.StrToTime(sTradeTm); fFormPay.NetSaleAmt = m_cDataService.DoubleParse(sNetSaleAmt); fFormPay.AfterSaveAmt = m_cDataService.DoubleParse(sPointAmt); fFormPay.AfterSaveInfo = sPointInfo; if (fFormPay.ShowDialog() != DialogResult.OK) return false; } // 거래구분 설정 => 사후적립 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.AFTER.HP_SAVE; // 원거래 정보 설정 m_cTrnStatus.Head.OrgSaleDate = sSaleDate; m_cTrnStatus.Head.OrgPosNo = sPosNo; m_cTrnStatus.Head.OrgTradeNo = sTradeNo; // 거래 완료 처리 ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); string sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return bRet; // 거래데이터 재조회 if (m_bServerTranCall == false) { TradeDealSearch("", "", "", ""); } else { TradeDealSearch(sSaleDate, sPosNo, sTradeNo, ""); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 추후 현금 영수증 처리 /// /// private bool CompleteCashTrade() { bool bRet = false; try { if (grdSearchList.CsmGridRowsCount == 0) return false; int nRow = grdSearchList.CsmGridSelectedRowIndex; if (nRow < 0) return false; //영업일자,POS번호,판매금액,거래번호,거래시간,사후적립금액,추가적립정보 string sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); string sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); string sNetSaleAmt = grdSearchList.CsmGridGetCell(nRow, 11); string sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); string sTaxAmt = grdSearchList.CsmGridGetCell(nRow, 12); string sCashAmt = grdSearchList.CsmGridGetCell(nRow, 10); if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0564) != true) return bRet; //if (m_bServerTranCall == false) //{ // // 사후적립 가능 여부 체크 처리 // bRet = m_cHpAfterSave.ChekcAfterSaveTran(sSaleDate, sPosNo, sTradeNo); // if (bRet == false) return bRet; //} // 거래구분 설정 => 사후적립 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.AFTER.CASH_RECEIPT; // 원거래 정보 설정 m_cTrnStatus.Head.OrgSaleDate = sSaleDate; m_cTrnStatus.Head.OrgPosNo = sPosNo; m_cTrnStatus.Head.OrgTradeNo = sTradeNo; //사후 적립 처리 //부가세 계산 double dTax = CmUtil.DoubleMultiplication(m_cDataService.DoubleParse(sTaxAmt), CmUtil.DoubleDivision(m_cDataService.DoubleParse(sCashAmt), m_cDataService.DoubleParse(sNetSaleAmt))); dTax = CmUtil.MathRounds(dTax, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc)); // 현금 화면 진행 string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH_APPROVAL, PosKey.MENU_KEY.CASH_APPROVAL_LATER_RECEIPT, m_cDataService.DoubleParse(sCashAmt).ToString(), dTax.ToString() }); if (sRet != UserCom.RST_OK) { m_cDataService.TranComplete(); return false; } // 거래 완료 처리 ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return bRet; // 거래데이터 재조회 if (m_bServerTranCall == false) { TradeDealSearch("", "", "", ""); } else { TradeDealSearch(sSaleDate, sPosNo, sTradeNo, ""); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 반품처리 /// /// private bool ReturnTrade() { bool bRet = false; try { string sNewTradeNo = m_cPosStatus.Base.TradeNo; if (grdSearchList.CsmGridRowsCount == 0) return false; int nRow = grdSearchList.CsmGridSelectedRowIndex; if (nRow < 0) return false; //(영업일자,POS번호,판매금액,거래번호,거래시간,거래구분) string sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); string sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); string sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); string sTradeKind = grdSearchList.CsmGridGetCell(nRow, 5); string sOrgInfo = grdSearchList.CsmGridGetCell(nRow, 6); string sRtnInfo = grdSearchList.CsmGridGetCell(nRow, 7); if (sTradeKind.StartsWith(ItemConst.TRAN_DIV.REFUND) == true) { // 반품 영수증 WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0230); return bRet; } else if (sRtnInfo != "") { // 반품된 영수증 WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0229); return bRet; } if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0253) != true) return bRet; if (m_bServerTranCall == false) { // 거래데이터 로딩 처리 bRet = m_cSaleRefund.LoadLocalTran(sSaleDate, sPosNo, sTradeNo); if (bRet == false) return bRet; } // 반품 사유코드 등록 frmSelReasonCode fForm = (frmSelReasonCode)FormManager.GetForm(FormManager.FORM_REASON_CODE); if (fForm == null) { fForm = new frmSelReasonCode(); FormManager.AddForm(FormManager.FORM_REASON_CODE, fForm); } fForm.ReasonGroup = PosConst.COMMON_CODE_GROUP.Z0008; // 사유 그룹코드 if (fForm.ShowDialog() != DialogResult.OK) { m_cDataService.TranComplete(); return false; } m_cTrnStatus.Head.RtnReasonCd = fForm.ReasonCode; // 선택된 사유코드 m_cTrnStatus.Head.RtnReasonMemo = fForm.ReasonName; // 선택된 사유명 // 거래구분 설정 => 반품 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.REFUND; // 원거래 정보 설정 m_cTrnStatus.Head.OrgSaleDate = sSaleDate; m_cTrnStatus.Head.OrgPosNo = sPosNo; m_cTrnStatus.Head.OrgTradeNo = sTradeNo; // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePluAmount(); // 영수증 반품 frmRefundPay fFormPay = (frmRefundPay)FormManager.GetForm(FormManager.FORM_SAL_RETURN_RECEIPT_PAY); if (fFormPay == null) { fFormPay = new frmRefundPay(); FormManager.AddForm(FormManager.FORM_SAL_RETURN_RECEIPT_PAY, fFormPay); } if (fFormPay.ShowDialog() != DialogResult.OK) { m_cDataService.TranComplete(); return false; } this.Update(); // 거래 완료 처리 ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); string sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); if (sRet != UserCom.RST_OK) return bRet; // 거래데이터 재조회 if (m_bServerTranCall == false) { TradeDealSearch("", "", "", ""); } else { TradeDealSearch(m_cPosStatus.Base.SaleDate, m_cPosStatus.Base.PosNo, sNewTradeNo, ""); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } return bRet; } /// /// 내역 불러오기 /// /// private bool LoadPluTrade() { bool bRet = false; try { if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE) return false; if (grdSearchList.CsmGridRowsCount == 0) return false; int nRow = grdSearchList.CsmGridSelectedRowIndex; if (nRow < 0) return false; //(영업일자,POS번호,판매금액,거래번호,거래시간,거래구분) string sSaleDate = m_cPosStatus.Global.CultureToDate(grdSearchList.CsmGridGetCell(nRow, 0)); string sPosNo = grdSearchList.CsmGridGetCell(nRow, 1); string sTradeNo = grdSearchList.CsmGridGetCell(nRow, 3); if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0254) != true) return bRet; // 거래데이터 로딩 처리 bRet = m_cSaleRefund.LoadLocalTranPlu(sSaleDate, sPosNo, sTradeNo); if (bRet == false) return bRet; ISalePluItemUs cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); //#17199 PB 대구남산_ [영수증-내역복원]시 임의할인된 내역도 포함되도록 개선 요청. start //기존 cPluService.ItemDcAllClear(true, true); //변경 //cPluService.ItemDcAllClear(true, true, false); //#17199 PB 대구남산_ [영수증-내역복원]시 임의할인된 내역도 포함되도록 개선 요청. end this.DialogResult = DialogResult.OK; this.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); } return bRet; } #endregion #region DeviceEvent 관련 /// /// DeviceEvent 관련 /// /// /// /// /// public void OnDeviceEvent(string sDevice, string sData1, string sData2, string sData3) { try { switch (sDevice) { case PosConst.OPOS_DEVICE.SCANNER: this.Invoke(new EventHandler(OnScannerEvent)); 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); } } /// /// SCANNER Event /// /// /// private void OnScannerEvent(object source, EventArgs e) { try { } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion DeviceEvent 관련 /// /// 입력박스 (바코드 입력 처리) /// /// /// private void txtBarCode_EditBoxKeyDownEvent(object sender, string sFuncValue) { try { if (sFuncValue == PosKey.MENU_KEY.ENTER) { //#20170623, 해피앱 추후적립_바코드 수정_lsr Start // 기존 /*if (txtBarCode.Text.Length != 16) { txtBarCode.Text = ""; return; } m_bServerTranCall = false; string sSaleDate = txtBarCode.Text.Substring(0, 8); string sPosNo = txtBarCode.Text.Substring(8, 2); string sSaleTime = txtBarCode.Text.Substring(10, 6); */ if (txtBarCode.Text.Length != 16 && txtBarCode.Text.Length != 20) { txtBarCode.Text = ""; return; } m_bServerTranCall = false; string sSaleDate = ""; string sPosNo = ""; string sSaleTime = ""; string sTradeNo = ""; if (txtBarCode.Text.Length == 16) { sSaleDate = txtBarCode.Text.Substring(0, 8); sPosNo = txtBarCode.Text.Substring(8, 2); sSaleTime = txtBarCode.Text.Substring(10, 6); } else { // 회사, 빌5(끝4자리), P1, 년1, 빌4, 년2, P2, 년3, 점1(5자리), 년4, 점2, 월1, 빌3, 월2, 점3, 일1, 빌2, 일2, 점4, 점5 sSaleDate = txtBarCode.Text.Substring(3, 1) + txtBarCode.Text.Substring(5, 1) + txtBarCode.Text.Substring(7, 1) + txtBarCode.Text.Substring(9, 1) + txtBarCode.Text.Substring(11, 1) + txtBarCode.Text.Substring(13, 1) + txtBarCode.Text.Substring(15, 1) + txtBarCode.Text.Substring(17, 1); sPosNo = txtBarCode.Text.Substring(2, 1) + txtBarCode.Text.Substring(6, 1); sTradeNo = "0" + txtBarCode.Text.Substring(16, 1) + txtBarCode.Text.Substring(12, 1) + txtBarCode.Text.Substring(4, 1) + txtBarCode.Text.Substring(1, 1); } //#20170623, 해피앱 추후적립_바코드 수정_lsr End txtBarCode.Text = ""; txtPrtData.Text = ""; txtPrtData.Tag = ""; //if ( sPosNo == m_cPosStatus.Base.PosNo) //{ //#20170623, 해피앱 추후적립_바코드 수정_lsr Start // 기존 //TradeDealSearch(sSaleDate, sPosNo, "", sSaleTime); TradeDealSearch(sSaleDate, sPosNo, sTradeNo, sSaleTime); //#20170623, 해피앱 추후적립_바코드 수정_lsr End //} //else //{ // m_dtSearchList.Clear(); // // 서버 거래 호출 만 처리 // string sRet = m_cSaleRefund.SearchServerTran(sSaleDate, sPosNo, "", sSaleTime); // if (sRet == UserCom.RST_OK) // { // DataRow drNewRow = m_dtSearchList.NewRow(); // drNewRow["SALE_DT"] = m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SaleDate); // drNewRow["POS_NO"] = m_cTrnStatus.Head.PosNo; // drNewRow["TOTSALE_AMT"] = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Head.NetSaleAmt); // drNewRow["TRADE_NO"] = m_cTrnStatus.Head.TradeNo; // drNewRow["SYS_TIME"] = CmUtil.StrToTime(m_cTrnStatus.Head.PayHms); // drNewRow["TRADE_KIND"] = m_cTrnStatus.Head.TradeDiv + m_cTrnStatus.Head.TradeKind; // drNewRow["ORG_INFO"] = ""; // drNewRow["RTN_INFO"] = ""; // drNewRow["AF_CASH"] = ""; // drNewRow["AF_POINT"] = ""; // m_dtSearchList.Rows.Add(drNewRow); // m_bServerTranCall = true; // } // //그리드 적용 // grdSearchList.CsmGridDataSource = m_dtSearchList; // grdSearchList.CsmGridSelectRow(0); // grdSearchItem_GridClickEvent(null, null); //} } } 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 btnDate_Click(object sender, EventArgs e) { try { string sDate = WinBasic.ShowForm(new string[] { FormManager.FORM_CALENDAR }); if (sDate != "" && sDate.Length == 8) { DateTime dtNew = DateTime.ParseExact(sDate, "yyyyMMdd", null); if ( CmUtil.LongParse(dtNew.AddDays(90).ToString("yyyyMMdd")) < CmUtil.LongParse(m_cPosStatus.Base.SaleDate)) { string sMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0547), 90); WinManager.ErrorMessage(sMsg); return; } txtSaleDate.Text = m_cPosStatus.Global.DateToCulture(sDate); } txtBarCode.Focus(); } 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 txtPosNo_Click(object sender, EventArgs e) { try { // 포스번호 입력 처리 string sStat = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.POSNO }); if (sStat != UserCom.RST_ERR && sStat.Length > 0) { txtPosNo.Text = string.Format("{0:D2}", CmUtil.LongParse(sStat)); } else { txtPosNo.Text = m_cPosStatus.Base.PosNo; } } 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 grdSearchItem_GridKeyDownEvent(object sender, string sMenuKey) { try { if(sMenuKey == PosKey.MENU_KEY.SCANKEY_UP_ARROW) { grdSearchList.CsmGridScroll("UP"); } else if(sMenuKey == PosKey.MENU_KEY.SCANKEY_DOWN_ARROW) { grdSearchList.CsmGridScroll("DOWN"); } } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } //#20180322 휴게소pos매출연동 start,phj private int RestAreaPosReSend(string sType,string sSaleDate,string sPosNo,string sTradeNo) { int iRet = UserCom.NG; string sQuery = string.Empty; try { sQuery = " UPDATE POSLOG..TR_SALE_HEADER \n" //20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 start, phj //기존 //+ " SET OUT_SEND_YN = '0' \n" //변경 + " SET OUT_SEND_YN = 'R' \n" //20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 end, phj + " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n" + " AND SALE_DT = '" + sSaleDate + "' \n" + " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n" + " AND POS_NO = '" + sPosNo + "' \n" + " AND TRAIN_MODE_YN = '0' \n" + " AND TRADE_KINDPER IN ('00','20','21','42') \n"; if (sType == ItemConst.RESTPOS_RESEND.EACH_RESEND) { sQuery = sQuery + " AND TRADE_NO = '" + sTradeNo + "' \n"; } m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword); iRet = m_cSqlDbService.DBExecuteNonQuery(sQuery); m_cSqlDbService.Close(); if (iRet != UserCom.OK) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", " 도로공사 휴게소POS 재전송 실패! " + " 영업일자:" + sSaleDate + " 영수증번호:" + sTradeNo + " 포스번호:" + sPosNo + " 타입:" + sType + "(0:전체,1:단건)"); } } catch (Exception ex) { UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명) System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명)) System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)) " 도로공사 휴게소POS 재전송 실패! " + ex.Message ); } return iRet; } //#20180322 휴게소pos매출연동 end,phj } }