spc-kiosk-pb/Window/WinBasic/frmInputData.cs

438 lines
19 KiB
C#
Raw Permalink Normal View History

2019-06-16 05:12:09 +00:00
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
}
/// <summary>
/// 폼로드
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
/// <summary>
/// 폼 클로즈
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
/// <summary>
/// 폼 컨트롤 초기화
/// </summary>
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
/// <summary>
/// 입력박스 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="sFuncValue"></param>
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);
}
}
/// <summary>
/// 입력박스 엔터 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 종료
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
}
/// <summary>
/// 소수점 처리
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
}
}