using System; using System.Collections; using System.Windows.Forms; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Drawing; namespace Cosmos.Win { public partial class frmInputData : Form { #region Variable //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 start,phj private SManager sManager = new SManager(); private IAirPortTran m_cAirPortTran = null; //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 end,phj //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 string m_sPosMenuKeyIn; public string PosMenuKeyIn { set { m_sPosMenuKeyIn = value; } get { return m_sPosMenuKeyIn; } } private string m_sPosMenuKeyOut; public string PosMenuKeyOut { set { m_sPosMenuKeyOut = value; } get { return m_sPosMenuKeyOut; } } #endregion #region 생성자 & 소멸자 public frmInputData() { InitializeComponent(); base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true); //this.UpdateStyles(); m_cPosStatus = (PosStatus)StateObject.POS; //m_cTrnStatus = (TranStatus)StateObject.TRAN; m_cDevStatus = (DeviceStatus)StateObject.DEVICE; //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 start,phj m_cAirPortTran = (IAirPortTran)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.AIRPORT_TRAN); //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 end,phj } /// /// 폼로드 /// /// /// private void frmInputData_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 + "()", ""); this.TopMost = true; InitControl(); txtInPutData.Select(); } /// /// 폼 클로즈 /// /// /// private void frmInputData_FormClosing(object sender, FormClosingEventArgs e) { UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text); } #endregion #region 폼 컨트롤 초기화 /// /// 폼 컨트롤 초기화 /// private void InitControl() { try { //this.Size = new Size(788, 402); //this.Location = new Point(216, 173); picBack.Image = ImageManager.GetImage(Cosmos.BaseFrame.BaseCom.NxImgPath, ImageManager.POP_SIZE_S); picBack.Location = new Point(0, 0); picBack.SendToBack(); this.Size = picBack.Size = new Size(788, 402); btnExit.Image = ImageManager.GetImage(Cosmos.BaseFrame.BaseCom.NxImgPath, ImageManager.BTN_CLOSE); 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); btnExit.Image = ImageManager.GetImage(Cosmos.BaseFrame.BaseCom.NxImgPath, ImageManager.BTN_CLOSE); if (btnExit.Image != null) btnExit.Text = ""; //if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.TRADENO || PosMenuKeyIn == PosConst.FRM_INPUT_DATA.POSNO // || PosMenuKeyIn == PosConst.FRM_INPUT_DATA.PRICE) //거래번호,POS번호, 단가 //{ // FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser); //} //else //{ // FormManager.MovePopUpForm(this, true, m_cPosStatus.Sale.ScreenSizeUser); //} if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ORDERNO || PosMenuKeyIn == PosConst.FRM_INPUT_DATA.APPRNO) { FormManager.MovePopUpForm(this, true, m_cPosStatus.Sale.ScreenSizeUser); } else { FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser); } //테마색상 적용! padInPut.ThemeColor = m_cPosStatus.ScnMst.ThemeColor; padInPut.ClearBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0817); padInPut.SearchBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1018); lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0126); padInPut.BtnDotEnable = true; lblMsgDesc.Text = ""; lblMsgDesc.Visible = false; lblMsgDesc.Location = new Point(22, 123); txtMemo.Text = string.Empty; pnlMemo.Visible = false; pnlMemo.Location = new Point(22, 123); btnExit.Visible = true; //btnExit.Text = "X"; txtInPutData.InputType = UI.InputType.Digit; m_sPosMenuKeyOut = string.Empty; //QTY, AMT, RATE if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.RATE) //율 { padInPut.BtnDotEnable = true; lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0234); txtInPutData.MaxLength = 3; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.AMT) //금액 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0233); txtInPutData.InputType = UI.InputType.Money; txtInPutData.MaxLength = 10; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ORDERNO) //주문번호 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0235); lblMsgDesc.Text = ""; // MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0238); //lblMsgDesc.Visible = true; lblMsgDesc.Visible = false; // KPS 사용일때만 메모입력 가능 if (PosMstManager.GetPosOption(POS_OPTION.OPT506) == "1") { lblMemo.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0177); pnlMemo.Visible = true; txtMemo.Text = string.Empty; txtMemo.MaxLength = 100; } //#10813 dkshin 대기(주문)번호 자릿 수 개선 //txtInPutData.MaxLength = 5; txtInPutData.MaxLength = 6; // grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 폼 타이틀 처리 : 주문(대기)번호) // 추가 lblTitle.Text = MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097); // grayber@20180110 전자영수증 주문(대기)번호표 출력 end //if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.PRE_PAYMENT) //선불은 필수! //{ // btnExit.Visible = false; //} } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ELOVE) //환경사랑 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0236); lblMsgDesc.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0237); lblMsgDesc.Visible = true; txtInPutData.MaxLength = 5; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.TRADENO) //거래번호 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0255); txtInPutData.MaxLength = 5; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.POSNO) //POS번호 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0460); txtInPutData.MaxLength = 2; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.GUEST_CNT) //고객수 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0489); txtInPutData.MaxLength = 5; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.PRICE) //상품단가 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0537); txtInPutData.InputType = UI.InputType.Money; txtInPutData.MaxLength = 10; } else if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.APPRNO) //승인번호 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0576); txtInPutData.InputType = UI.InputType.Digit; txtInPutData.MaxLength = 8; } else //수량 { lblMsg.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0232); txtInPutData.MaxLength = 5; } // 기능 버튼 설정 체크 FormManager.SetbtnMenu(null, m_cDevStatus.ICReader.UseYn, btnMenu1, btnMenu2, btnMenu3, btnMenu4); txtInPutData.Value = ""; } 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 /// /// 입력박스 이벤트 /// /// /// private void txtEditBox_EditBoxKeyDownEvent(object sender, string sFuncValue) { try { if (sFuncValue == PosKey.MENU_KEY.ENTER) { if (txtInPutData.Value == "") return; // Del, 2017.05.11, 메모입력은 판매원 선택으로 ... //주문번호 //if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ORDERNO && pnlMemo.Visible == true) //{ // txtMemo.Select(); // return; //} // 대기번호 입력시 구분자 설정 하여 메모와 함께 리턴 if (PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ORDERNO && pnlMemo.Visible == true) { this.m_sPosMenuKeyOut = txtInPutData.Value.Trim() + "|" + txtMemo.Text.Replace("|", "").Trim(); } else { m_sPosMenuKeyOut = txtInPutData.Value.Trim(); } //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 start,phj //기존 //this.DialogResult = DialogResult.OK; //this.Close(); //변경 //#20180213 인천공항 상태체크 로직은 대기번호 입력화면에서만 체크 하도록 수정 start,phj //기존 //if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") //변경 if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1" && PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ORDERNO) //#20180213 인천공항 상태체크 로직은 대기번호 입력화면에서만 체크 하도록 수정 end,phj { string sRet = string.Empty; sRet = m_cAirPortTran.IncheonAirportCheck(); if (sRet == UserCom.RST_OK) { this.DialogResult = DialogResult.OK; this.Close(); } } else { this.DialogResult = DialogResult.OK; this.Close(); } //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 end,phj } else if (sFuncValue == PosKey.MENU_KEY.CLEAR) { if (((Cosmos.UI.CsmPosEditBox)sender).ReadOnly == false) ((Cosmos.UI.CsmPosEditBox)sender).Text = ""; } else if (sFuncValue == PosKey.MENU_KEY.ESC_PREVIOUS) { 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); } } /// /// 입력박스 엔터 이벤트 /// /// /// private void txtEditBox_EnterEvent(object sender, EventArgs e) { try { padInPut.SetActiveControl = (Control)sender; } 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 btnExit_Click(object sender, EventArgs e) { //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 start,phj //기존 //this.Close(); //변경 //#20180213 인천공항 상태체크 로직은 대기번호 입력화면에서만 체크 하도록 수정 start,phj //기존 //if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1") //변경 if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1" && PosMenuKeyIn == PosConst.FRM_INPUT_DATA.ORDERNO) //#20180213 인천공항 상태체크 로직은 대기번호 입력화면에서만 체크 하도록 수정 end,phj { // 인천공항 경우, 닫을 때 인천공항 포스 상태 체크한다. // 만약 제품 추가하기 위해서 인천공항 일괄취소 하면 자사포스에서 결제완료 후 반품까지 딜레이가 걸리기 때문에 // 사전 방지한다. string sRet = string.Empty; sRet = m_cAirPortTran.CloseClick(); if (sRet == UserCom.RST_OK) { this.Close(); } } else { this.Close(); } //#20180123 인천공항 포스 경우 대기번호 입력창 닫을 때 인천공항 상태 체크하도록 수정 end,phj } /// /// 소수점 처리 /// /// /// private void EditBoxTextChangedEvnet(object sender, EventArgs e) { try { //if (padInPut.BtnDotEnable == true) //{ // string stmp = ((Cosmos.UI.CsmPosEditBox)sender).Value; // if (stmp.IndexOf(".") != -1) // ((Cosmos.UI.CsmPosEditBox)sender).Value = Math.Truncate(m_cDataService.DoubleParse(stmp)).ToString(); //} } catch (Exception ex) { WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message); } } #endregion private void txtMemo_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == '|') { e.Handled = true; return; } if (e.KeyChar == '\r') { e.Handled = true; if (string.IsNullOrWhiteSpace(txtInPutData.Value)) { txtInPutData.Select(); return; } // 입력완료 this.m_sPosMenuKeyOut = txtInPutData.Value.Trim() + "|" + txtMemo.Text.Replace("|", "").Trim(); this.DialogResult = DialogResult.OK; this.Close(); } } private void txtMemo_Enter(object sender, EventArgs e) { padInPut.SetActiveControl = (Control)sender; } #region User Method #endregion } }