spc-kiosk-pb/Window/WinPayment/frm_PayMainBack.cs
2019-06-16 14:12:09 +09:00

593 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.Data;
using Cosmos.Win;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
//#20181015 결제창 엑박 관련 이미지 미사용 처리 start
using System.Drawing.Drawing2D;
//#20181015 결제창 엑박 관련 이미지 미사용 처리 end
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 결제 팝업 백그라운드 화면
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Win
{
public partial class frm_PayMainBack : Form
{
#region
private PosStatus m_cPosStatus = new PosStatus(); //기본정보 참조
private StateServer StateObject = (StateServer)StateServer.GetInstance(); //StateObject : StateServer Object(객체)
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
private ArrayList m_alMotDtl = new ArrayList(); // 결제 수단 정보 MOT 배열
private int iMaxPage; // 결제 수단 정보 MOT 최대 페이지 수
private int iNowPage; // 결제 수단 정보 MOT 현재 페이지
private readonly string MotbtnName = "BtnMotPay"; // 결제 수단 기본 버튼명
private string m_sFuncKey = ""; // 결제 수단 기능키
#endregion
#region & &
public frm_PayMainBack()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
//#20181015 결제창 엑박 관련 이미지 미사용 처리 start
this.picBack.Paint += new System.Windows.Forms.PaintEventHandler(this.picBack_Gradient);
//#20181015 결제창 엑박 관련 이미지 미사용 처리 end
}
//#20181015 결제창 엑박 관련 이미지 미사용 처리 start
#region picBack Paint
private void picBack_Gradient(object sender, PaintEventArgs e)
{
try
{
//picBack 그라데이션 처리
#region picBack
Color startColor = Color.FromArgb(138, 147, 165);
Color middleColor1 = Color.FromArgb(138, 147, 165);
Color middleColor2 = Color.FromArgb(33, 44, 56);
Color endColor = Color.FromArgb(33, 44, 56);
LinearGradientBrush br = new LinearGradientBrush(this.picBack.ClientRectangle,
System.Drawing.Color.FromArgb(255, 255, 255),
System.Drawing.Color.Black,
0,
false);
ColorBlend cb = new ColorBlend();
//그라데이션 시작 위치 설정
cb.Positions = new[] { 0, 1 / 10f, 1 / 2f, 1 };
//그라데이션 시작 위치별 색상 설정
cb.Colors = new[] { startColor, middleColor1, middleColor2, endColor };
//그라데이션 처리 회전 각도
br.RotateTransform(90);
br.InterpolationColors = cb;
e.Graphics.FillRectangle(br, this.picBack.ClientRectangle);
#endregion picBack
}
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 picBack Paint
//#20181015 결제창 엑박 관련 이미지 미사용 처리 end
protected void InitPayMainBack(PosStatus cPosStatus, IDataCommonUs cDataCommon, string sPosMenuKey, string sPAY_STEP, string sSeqNo)
{
m_cPosStatus = cPosStatus;
m_cDataCommon = cDataCommon;
picMotPayImg.Parent = pnlCardMot;
m_sFuncKey = sPosMenuKey;
//#20181015 결제창 엑박 관련 이미지 미사용 처리 start
//변경
//picBack.BackColor = Color.FromArgb(138, 147, 165);
//#20181015 결제창 엑박 관련 이미지 미사용 처리 end
btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE);
if (btnExit.Image != null) btnExit.Text = "";
string m_sEnterThemeColor = m_cPosStatus.ScnMst.ThemeColor;
////승인 종류 버튼 테마색상 적용!
if (string.IsNullOrEmpty(m_sEnterThemeColor) == false)
{
if (m_sEnterThemeColor.Length == 9)
padInPut.ThemeColor = m_sEnterThemeColor;
}
padInPut.ClearBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0817);
padInPut.SearchBtnText = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1018);
SetRichBoxMotMsg(rtbMotMain, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, sPosMenuKey, sSeqNo);
//#15606 제휴서비스 결제 프로세스 개선 start
//기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
//기존
//LoadMotPayHdr(m_cPosStatus.Sale.SaleMainPayStep);
//변경
LoadMotPayHdr(m_cPosStatus.Sale.SaleMainPayStep, sPosMenuKey);
//#15606 제휴서비스 결제 프로세스 개선 end
//LoadMotPayHdr(sPAY_STEP);
}
#endregion
#region MOT
/// <summary>
/// 결제 MOT 초기화
/// </summary>
private void SetMotPayInit()
{
try
{
foreach (Control control in pnlCardMot.Controls)
{
if (control is UI.CsmButton)
{
if (control.Text != "∧" && control.Text != " ")
{
control.Text = "";
control.Tag = "";
control.Visible = true;
}
}
}
rtbMotPayTxt.Text = "";
picMotPayImg.Image = 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);
}
}
/// <summary>
/// 결제 MOT 헤더 로드
/// </summary>
/// <param name="iStep"></param>
//#15606 제휴서비스 결제 프로세스 개선 start
//기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
//기존
//protected void LoadMotPayHdr(string sStep)
//변경
protected void LoadMotPayHdr(string sStep, string sPosMenuKey)
//#15606 제휴서비스 결제 프로세스 개선 end
{
//헤더 로드
m_alMotDtl.Clear();
int iPage = 1;
int iSeq = 1;
SetMotPayInit();
//#15606 제휴서비스 결제 프로세스 개선 start
//기능키를 넘겨 해당 기능키의 mot만 가져오도록 처리
//기존
//DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG.TABLE_NAME, sStep, "", "");
//변경
DataTable dt = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG.TABLE_NAME, sStep, sPosMenuKey, "");
//#15606 제휴서비스 결제 프로세스 개선 end
if (dt == null || dt.Rows.Count <= 0) return;
//배열 담기
foreach (DataRow dr in dt.Rows)
{
if (iSeq == 6)
{
iPage += 1;
iSeq = 1;
}
// 페이지 번호, 버튼명, 명, 태그 값
m_alMotDtl.Add(new string[] { iPage.ToString(), string.Format("{0}{1:00}",MotbtnName,iSeq), CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.MOT_NM)
,string.Format("{0}^{1}^{2}^{3}",CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.MSG_TYPE),CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.CNNT_ID)
,CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SEQ_NO),CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.IMG_NM))
,CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.CNNT_ID)
});
//// 페이지 번호, 버튼명, 명, 태그 값
//m_alMotDtl.Add(new string[] { iPage.ToString(), string.Format("{0}{1:00}",MotbtnName,iSeq), CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.MOT_NM),
// CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.MSG_TYPE) + CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.CNNT_ID) + CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.IMG_NM)});
iSeq += 1;
}
// 보여주기
iNowPage = 1;
iMaxPage = iPage;
SetBtnMotPay();
//#15606 제휴서비스 결제 프로세스 개선 start
//1:1 매칭인 경우에만 해당 mot 활성화
//기존
/*
//2016-10-25 조성완과장 요청으로 신용카드 일때 선택 안함!
if (m_sFuncKey != PosKey.MENU_KEY.CREDIT_CARD)
{
if (dt.Rows.Count > 0) FindFuncMot(); //BtnMotPay_Click(BtnMotPay01, null);
}
*/
//변경
if (dt.Rows.Count == 1) FindFuncMot();
//#15606 제휴서비스 결제 프로세스 개선 end
}
private void FindFuncMot()
{
try
{
if (m_alMotDtl == null || iMaxPage == 0) return;
foreach (string[] atmp in m_alMotDtl)
{
if (atmp[4] == m_sFuncKey)
{
BtnMotPay01.Text = atmp[2].ToString();
BtnMotPay01.Tag = atmp[3].ToString();
iNowPage = CmUtil.IntParse(atmp[0]);
string sTmp;
sTmp = BtnMotPay01.Tag.ToString();
string[] aParam = sTmp.Split(new string[] { "^" }, StringSplitOptions.None);
string sCnntId = aParam[0];
string sMsgFlg = aParam[1];
string sSeqNo = aParam[2];
string sImgPath = aParam[3];
picMotPayImg.Image = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, sImgPath.Trim());
SetRichBoxMotMsg(rtbMotPayTxt, sCnntId, sMsgFlg, sSeqNo);
BtnMotPay02.Visible = false;
BtnMotPay03.Visible = false;
BtnMotPay04.Visible = false;
BtnMotPay05.Visible = false;
BtnMotPayUp.Enabled = true;
BtnMotPayDown.Enabled = true;
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);
}
}
/// <summary>
/// 결제 MOT 버튼 셋팅
/// </summary>
/// <returns></returns>
public bool SetBtnMotPay()
{
try
{
SetMotPayInit();
if (m_alMotDtl == null || iMaxPage == 0) return false;
int iStrtNum = 1;
foreach (string[] atmp in m_alMotDtl)
{
if (atmp[0] == iNowPage.ToString())
{
Cosmos.UI.CsmButton btnCtl = (Cosmos.UI.CsmButton)pnlCardMot.Controls[atmp[1]];
if (btnCtl != null)
{
btnCtl.Text = atmp[2];
btnCtl.Tag = atmp[3];
}
}
iStrtNum += 1;
}
if (iNowPage == 1)
{
BtnMotPayUp.Enabled = false;
}
else
{
BtnMotPayUp.Enabled = true;
}
if (iMaxPage == iNowPage)
{
BtnMotPayDown.Enabled = false;
}
else
{
BtnMotPayDown.Enabled = true;
}
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;
}
}
/// <summary>
/// 결제 MOT 버튼 클릭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnMotPay_Click(object sender, EventArgs e)
{
try
{
if (((UI.CsmButton)sender).Text == "") return;
if (BtnMotPay02.Visible == false)
{
SetBtnMotPay();
}
else
{
if (((UI.CsmButton)sender) == BtnMotPayUp)
{
if (iNowPage == 1) return;
iNowPage -= 1;
SetBtnMotPay();
}
else if (((UI.CsmButton)sender) == BtnMotPayDown)
{
if (iNowPage == iMaxPage) return;
iNowPage += 1;
SetBtnMotPay();
}
else
{
string sTmp;
BtnMotPay01.Text = ((UI.CsmButton)sender).Text;
BtnMotPay01.Tag = ((UI.CsmButton)sender).Tag;
sTmp = BtnMotPay01.Tag.ToString();
string[] aParam = sTmp.Split(new string[] { "^" }, StringSplitOptions.None);
string sCnntId = aParam[0];
string sMsgFlg = aParam[1];
string sSeqNo = aParam[2];
string sImgPath = aParam[3];
picMotPayImg.Image = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, sImgPath.Trim());
SetRichBoxMotMsg(rtbMotPayTxt, sCnntId, sMsgFlg, sSeqNo);
//sTmp = BtnMotPay01.Tag.ToString();
//picMotPayImg.Image = ImageManager.GetImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM, CmUtil.MidH(sTmp, 5, 50).Trim());
//SetRichBoxMotMsg(rtbMotPayTxt, CmUtil.MidH(sTmp, 0, 1), CmUtil.MidH(sTmp, 1, 4));
BtnMotPay02.Visible = false;
BtnMotPay03.Visible = false;
BtnMotPay04.Visible = false;
BtnMotPay05.Visible = false;
BtnMotPayUp.Enabled = true;
BtnMotPayDown.Enabled = true;
}
}
try
{
padInPut.ActiveControl.Focus();
}
catch { }
}
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 MOT
/// <summary>
/// 리치박스 MOT 텍스트 설정
/// </summary>
/// <returns></returns>
protected bool SetRichBoxMotMsg(RichTextBox rtbMot, string sMsgTp, string sMsgFlag, string sSeqNo)
{
try
{
rtbMot.Text = "";
DataTable dtHead = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG.TABLE_NAME, sMsgTp, sMsgFlag, sSeqNo);
if (dtHead != null && dtHead.Rows.Count > 0)
{
//#13753 POS MOT음성 기능 추가 개발요청 start,phj
//기존
/*
// 음성 사용 유무(0:미사용, 1:사용)
if (PosMstManager.GetPosOption(POS_OPTION.OPT309) != "0")
{
DataRow dr = dtHead.Rows[0];
if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_DIV) == "01") // 00(없음), 01(WAVE), 02(TTS)
{
string sFilePath = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_NM);
CmUtil.PlaySound(sFilePath);
}
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_DIV) == "02") // 00(없음), 01(WAVE), 02(TTS)
{
CmUtil.SpeakByTTSEngine(m_cPosStatus.Base.Country, CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.TTS_DSCRP), 150);
}
}
*/
//변경
// PCKR인 경우에는 직영만 음성파일 재생하도록 함!
// PCKR이 아닌 경우에는 직영가맹 조건에 추가안함!
//#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정 start,phj
// 기존
/*
if (((m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) == false) || //PCKR이 아니거나
(((m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) == true) && m_cPosStatus.Mst.DrtFrcsDiv == "10")) //PCKR이고 직영일 때!
{
*/
//#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정 end,phj
//#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj
if (((m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) == false) || //PCKR이 아니거나
(((m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR && m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) == true) &&
PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1")) //PCKR이고 MOT옵션 사용 일 때!
{
//#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj
// 음성 사용 유무(0:미사용, 1:사용)
if (PosMstManager.GetPosOption(POS_OPTION.OPT309) != "0")
{
DataRow dr = dtHead.Rows[0];
if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_DIV) == "01") // 00(없음), 01(WAVE), 02(TTS)
{
string sFilePath = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_NM);
CmUtil.PlaySound(sFilePath);
}
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.SOUND_FILE_DIV) == "02") // 00(없음), 01(WAVE), 02(TTS)
{
CmUtil.SpeakByTTSEngine(m_cPosStatus.Base.Country, CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG.DATA.TTS_DSCRP), 150);
}
}
}
//#13753 POS MOT음성 기능 추가 개발요청 end,phj
}
DataTable dtDetl = m_cDataCommon.SelectMOT(PosMst.MST_MOT_MSG_DTL.TABLE_NAME, sMsgTp, sMsgFlag, sSeqNo);
if (dtDetl == null || dtDetl.Rows.Count <= 0) return false;
int iStrtNum = 0;
foreach (DataRow dr in dtDetl.Rows)
{
string tmpStr = CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.MSG);
//rtbMot.AppendText(tmpStr.Trim());
//rtbMot.Select(iStrtNum, tmpStr.Trim().Length);
rtbMot.AppendText(tmpStr);
rtbMot.Select(iStrtNum, tmpStr.Length);
rtbMot.SelectionColor = CmUtil.GetColorToString(CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_COLOR)); // 백 컬러
int iFontSize = CmUtil.GetDataRowInt(dr, PosMst.MST_MOT_MSG_DTL.DATA.FONT_SIZE);
if (iFontSize <= 0)
iFontSize = 1;
rtbMot.SelectionFont = new Font(m_cPosStatus.Base.FONT, iFontSize);
if (CmUtil.GetDataRowStr(dr, PosMst.MST_MOT_MSG_DTL.DATA.NEW_LINE_YN) == "1")
{
rtbMot.AppendText("\n");
iStrtNum += 1;
}
//iStrtNum += tmpStr.Trim().Length; // +1;
iStrtNum += tmpStr.Length; // +1;
}
rtbMot.Select(0, 0);
rtbMot.Refresh();
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
private void rtbMotMain_Enter(object sender, EventArgs e)
{
padInPut.SetActiveFocus();
}
private void rtbMotPayTxt_Enter(object sender, EventArgs e)
{
padInPut.SetActiveFocus();
}
//#15606 제휴서비스 결제 프로세스 개선 start
//제휴통합 창에서 상단 제휴사 선택시 mot및 음성mot 재설정
#region MOT
/// <summary>
/// 제휴통합 MOT 설정
/// </summary>
public void SetMotMobileUnity(string sPosMenuKey, string sPAY_STEP)
{
try
{
m_sFuncKey = sPosMenuKey;
SetRichBoxMotMsg(rtbMotMain, PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, sPosMenuKey, "");
LoadMotPayHdr(m_cPosStatus.Sale.SaleMainPayStep, sPosMenuKey);
}
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 MOT
//#15606 제휴서비스 결제 프로세스 개선 end
}
}