spc-kiosk-pb/Window/WinPayment/frmAirPortTran.cs

350 lines
14 KiB
C#
Raw Normal View History

2019-06-16 05:12:09 +00:00
/*
//#20171227 인천공항 포스연동 start, phj
//#20171227 인천공항 포스연동 end, phj
, , POS에서
SPCPOS를 .
( SPCPOS에서하고 POS에서 )
1) SPCPOS에서 ,
2) , . (INCHEON_AIRPORT = "99019")
(FORM_INCHEONAIRPORT = "SC9916") , ,
POS의 .
.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.UI;
namespace Cosmos.Win
{
public partial class frmAirPortTran : frm_PayMainBack
{
#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 IICReaderUs m_cDeviceICReader = null;
//private ISignPadUs m_cDeviceSignPad = null;
private IDataProcessUs m_cDataService = null;
//private IPaymentUs m_cWeChatPay = null;
private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
private IAirPortTran m_cAirPortTran = null;
//private PosOLEDevice.DelegateOlePos delegatePos;
private string m_sPosMenuKey;
public string SetPosMenuKey { set { this.m_sPosMenuKey = value; } } // POS 기능키
private bool bNotDoubleClik = false; // 더블 클릭 방지용
#endregion Variable
#region &
public frmAirPortTran()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE;
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_cAirPortTran = (IAirPortTran)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.AIRPORT_TRAN);
// OLE 입력 델리게이트 생성
//delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent);
}
private void frmAirPortTran_Load(object sender, EventArgs e)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
InitControl();
}
private void frmAirPortTran_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);
}
private void frmAirPortTran_Activated(object sender, EventArgs e)
{
PosOLEDevice.SetEventHandle(delegatePos);
}
//#20180118 인천공항 결제마감창 바로 종료 못하도록 딜레이 처리 start
private void frmAirPortTran_Shown(object sender, EventArgs e)
{
int iDelay = 3000;
Delay(iDelay);
}
//#20180118 인천공항 결제마감창 바로 종료 못하도록 딜레이 처리 end
private void frmAirPortTran_Deactivate(object sender, EventArgs e)
{
PosOLEDevice.SetEventHandle(null);
}
#endregion &
#region
/// <summary>
/// 폼 컨트롤 초기화
/// </summary>
private void InitControl()
{
try
{
this.Location = new Point(0, 50);
this.Size = new Size(1024, 525);
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(BaseCom.NxImgPath, ImageManager.BTN_CLOSE);
if (btnExit.Image != null) btnExit.Text = "";
lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1082); // "인천공항";// MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0042);
padInPut.Visible = false;
if (string.IsNullOrEmpty(m_cPosStatus.Sale.SaleMainPayStep))
{
m_cPosStatus.Sale.SaleMainPayStep = "3";
}
InitPayMainBack(m_cPosStatus, m_cDataCommon, m_sPosMenuKey, PosConst.MOT_MSG_TYPE.PAY_STEP_3, "");
}
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>
private void btnProc_Click(object sender, EventArgs e)
{
string sRet = string.Empty;
try
{
if (bNotDoubleClik) return;
bNotDoubleClik = true;
//닫기
if (((Cosmos.UI.CsmButton)sender) == btnExit)
{
sRet = CloseClick();
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK)
{
//this.DialogResult = DialogResult.Cancel;
//this.Close();
}
else
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
//결제요청
else if (((Cosmos.UI.CsmButton)sender) == btnPayRequest)
{
sRet = PayRequestClick();
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
this.DialogResult = DialogResult.OK;
this.Close();
}
//결제조회
else if (((Cosmos.UI.CsmButton)sender) == btnPaySearch)
{
sRet = PaySearchClick();
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
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);
bNotDoubleClik = false;
}
}
#endregion Control Event
#region !
private string CloseClick()
{
string sRet = UserCom.RST_ERR;
try
{
sRet = m_cAirPortTran.CloseClick();
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Incheon Airport Pay CloseClick() - Error! " + ex.Message);
return UserCom.RST_ERR;
}
}
#endregion
#region !
private string PaySearchClick()
{
string sRet = UserCom.RST_ERR;
try
{
sRet = m_cAirPortTran.PaySearchClick();
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"IncheonAirport Pay PaySearchClick() - Error! " + ex.Message);
return UserCom.RST_ERR;
}
}
#endregion
#region !
private string PayRequestClick()
{
string sRet = UserCom.RST_ERR;
try
{
sRet = m_cAirPortTran.PayRequestClick();
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"Incheon Airport Pay PayRequestClick() - Error! " + ex.Message);
return UserCom.RST_ERR;
}
}
#endregion
//#20180118 인천공항 결제마감창 바로 종료 못하도록 딜레이 처리 start
#region
/// <summary>
/// 딜레이
/// </summary>
/// <param name="MS"></param>
/// <returns></returns>
private void Delay(int MS)
{
DateTime ThisMoment = DateTime.Now;
TimeSpan duration = new TimeSpan(0, 0, 0, 0, MS);
DateTime AfterWards = ThisMoment.Add(duration);
btnExit.Visible = false;
while (AfterWards >= ThisMoment)
{
System.Windows.Forms.Application.DoEvents();
ThisMoment = DateTime.Now;
}
btnExit.Visible = true;
}
#endregion
//#20180118 인천공항 결제마감창 바로 종료 못하도록 딜레이 처리 end
#region DeviceEvent
/// <summary>
/// DeviceEvent 관련
/// </summary>
/// <param name="sDevice"></param>
/// <param name="sData1"></param>
/// <param name="sData2"></param>
/// <param name="sData3"></param>
public void OnDeviceEvent(string sDevice, string sData1, string sData2, string sData3)
{
switch (sDevice)
{
case PosConst.OPOS_DEVICE.SCANNER:
this.Invoke(new EventHandler(OnScannerEvent));
break;
}
}
/// <summary>
/// Scanner Event
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void OnScannerEvent(object source, EventArgs e)
{
string sScanCode = m_cDevStatus.Scanner.DataLabel;
ScannerEvent(sScanCode); // 스캐너
}
/// <summary>
/// 스캐너 입력 처리
/// </summary>
/// <param name="sScanCode">스캔데이터</param>
private void ScannerEvent(string sScanCode)
{
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
}
}